Jika Anda menggunakan AND
dan OR
, pada akhirnya Anda akan tersandung oleh sesuatu seperti ini:
$this_one = true;
$that = false;
$truthiness = $this_one and $that;
Ingin menebak apa yang $truthiness
setara?
Jika Anda mengatakan false
... bzzzt, maaf, salah!
$truthiness
di atas memiliki nilai true
. Mengapa? =
memiliki prioritas lebih tinggi dari and
. Penambahan tanda kurung untuk menunjukkan urutan tersirat membuat ini lebih jelas:
($truthiness = $this_one) and $that
Jika Anda menggunakan &&
alih-alih and
dalam contoh kode pertama, itu akan berfungsi seperti yang diharapkan dan menjadi false
.
Sebagaimana dibahas dalam komentar di bawah, ini juga berfungsi untuk mendapatkan nilai yang benar, karena tanda kurung memiliki prioritas lebih tinggi daripada =
:
$truthiness = ($this_one and $that)
~
operator bit-wise BUKAN dan bukan logis. ;-)