dasaroperatorPemula3 mnt baca

Operator Perbandingan & Logika

Bandingkan nilai dengan benar: == vs ===, dan gabungkan kondisi dengan &&, ||, !.

Analogi: Satpam dengan Daftar Syarat

Bayangkan satpam bioskop yang memeriksa dua syarat: "umur cukup?" DAN "tiket valid?". Pengunjung lolos hanya jika kedua syarat terpenuhi. Kadang syaratnya alternatif: "punya tiket reguler ATAU tiket VIP". Operator perbandingan (> < >= <= == !=) adalah pertanyaan-pertanyaan pemeriksa itu, dan operator logika (&& || !) adalah cara menggabungkan jawabannya.

Kenapa Ini Fondasi Semua Keputusan Program?

Setiap if yang akan kamu tulis berdiri di atas operator ini. Program yang "pintar" (menolak umur di bawah 17, memberi diskon kalau member DAN belanja besar) pada dasarnya hanyalah rangkaian perbandingan yang digabung operator logika. Kuasai ini, maka percabangan di modul berikutnya terasa mudah.

php
<?php
// Contoh 1: perbandingan satu per satu
$umur = 20;
var_dump($umur >= 17);   // bool(true): boleh nonton film dewasa
var_dump($umur < 17);    // bool(false)

$nama = "admin";
var_dump($nama === "admin");  // bool(true): identik, nilai dan tipe sama
var_dump($nama !== "Admin");  // bool(true): beda kapital = beda string

Ingat pelajaran type juggling: selalu pilih === dan !== untuk perbandingan. == yang longgar adalah sumber bug legendaris di PHP.

php
<?php
// Contoh 2: menggabungkan syarat dengan logika (studi kasus bioskop)
$umur = 20;
$punyaTiket = true;
$saldo = 50000;
$hargaTiket = 45000;

// AND (&&): semua harus true
$bisaMasuk = ($umur >= 17) && $punyaTiket;
var_dump($bisaMasuk);   // bool(true)

// OR (||): cukup satu yang true
$bisaBeliPopcorn = ($saldo >= 20000) || $punyaVoucher;
var_dump($bisaBeliPopcorn);  // bool(true) karena saldo cukup

// NOT (!): membalik
$belumBayar = !$sudahBayar;  // true menjadi false, false menjadi true

// Gabungan nyata: diskon untuk member yang belanja besar ATAU pemegang kupon
$member = true;
$belanja = 120000;
$punyaKupon = false;
$dapatDiskon = ($member && $belanja >= 100000) || $punyaKupon;
var_dump($dapatDiskon);  // bool(true)

Tanda kurung di contoh terakhir bukan hiasan: && dikerjakan lebih dulu daripada || (seperti kali lebih dulu daripada tambah di matematika). Kalau ragu urutannya, selalu pakai kurung, kode jadi jelas tanpa perlu menghafal tabel prioritas.

Kesalahan Umum Pemula

Salah: memakai = di dalam if.

php
<?php
$umur = 15;
if ($umur = 17) {   // SALAH: mengisi $umur dengan 17!
    echo "boleh masuk";   // selalu tampil, bug diam-diam
}

Ini varian bug dari modul operator assignment. Di dalam if harus perbandingan (== atau lebih baik ===), bukan assignment.

Salah: menulis syarat bertingkat tanpa kurung.

php
<?php
// SALAH (sulit dibaca, rawan salah tafsir):
$dapatDiskon = $member && $belanja >= 100000 || $punyaKupon;

// BENAR (maksudnya eksplisit):
$dapatDiskon = ($member && ($belanja >= 100000)) || $punyaKupon;

Komputer mungkin menghitung dengan benar, tapi manusia yang membaca (termasuk kamu 3 bulan lagi) bisa salah paham. Kurung itu gratis dan menyelamatkan.

Salah: membandingkan string dengan cara angka.

php
<?php
var_dump("10" > "9");   // bool(false)! Perbandingan string itu per huruf: "1" < "9"

Saat kedua sisi adalah string non-angka, PHP membandingkan per karakter seperti kamus, bukan sebagai angka. "10" > "9" menghasilkan false karena karakter "1" lebih kecil dari "9". Kalau maksudmu angka, pastikan tipenya angka dulu dengan casting (int).

Tabel Kebenaran Kilat

Operator logika mengikuti tabel kebenaran yang wajib hafal di luar kepala:

  • A && B true hanya jika keduanya true. "Sudah login DAN punya saldo" baru bisa checkout.
  • A || B true jika salah satu true. "Bayar tunai ATAU transfer" sama-sama sah.
  • !A membalik: true jadi false, false jadi true.

Trik membaca kondisi kompleks: ucapkan dengan kata sehari-hari. ($umur >= 17 && $punyaKTP) || $didampingiOrtu dibaca "umur cukup dan punya KTP, atau didampingi orang tua". Kalau susah diucapkan, pecah menjadi variabel boolean bernama jelas:

php
<?php
$cukupUmur = $umur >= 17;
$punyaIdentitas = $punyaKTP || $punyaSIM;
$bolehMasuk = ($cukupUmur && $punyaIdentitas) || $didampingiOrtu;

Tiga baris ini jauh lebih mudah dibaca dan di-debug daripada satu kondisi raksasa.

Catatan teknis: PHP juga punya operator and, or, xor (huruf kecil), tapi prioritasnya berbeda dari && dan || dan sering menimbulkan bug halus. Praktik standar: selalu pakai versi simbol (&&, ||, !).

Tantangan

Validasi umur bioskop

Film butuh umur minimal 13 DAN (sudah bayar ATAU punya voucher). Buat variabel $umur, $sudah_bayar, $punya_voucher, tulis satu ekspresi boolean $boleh_masuk yang benar, lalu var_dump hasilnya untuk 2 kombinasi nilai berbeda.

Kuis Bab

Uji pemahamanmu: Bab 2: Tipe Data & Operator

Jawab 5 soal berikut, lalu tekan "Periksa Jawaban".

1.Apa hasil var_dump(0.1 + 0.2)?

2.Apa hasil dari var_dump(0 == "php")?

3.Operator mana yang memeriksa nilai DAN tipe data?

4.Apa hasil dari 17 % 5?

5.Kapan bagian kanan dari && tidak dijalankan?