PHP มี logical operators && และ AND ทั้งคู่คืนค่า true/false (Boolean operators) แตกต่างกันที่ precedence (ลำดับความสำคัญ)
AND Operator
คืน true ก็ต่อเมื่อทั้งสองเงื่อนไขเป็น true
ตัวอย่าง
<?php $val1 = 20; $val2 = 50; if ($val1 == 20 and $val2 == 50) echo "True"; else echo "False"; ?>
ผลลัพธ์
True
&& Operator
ทำงานเหมือน AND แตกต่างที่ precedence สูงกว่า
ตัวอย่าง
<?php $val1 = 25; $val2 = 5; if ($val1 == 25 && pow($val2, 2) == $val1) echo "True"; else echo "False"; ?>
ผลลัพธ์
True
ความแตกต่างของ Precedence
<?php $a = 10; $b = NULL; $val = $a && $b; echo ($val ? 'TRUE' : 'FALSE'), "\n"; $val = $a and $b; echo ($val ? 'TRUE' : 'FALSE'); ?>
ผลลัพธ์
FALSE TRUE
คำอธิบาย
$val = $a && $b: && precedence สูงกว่า = ดังนั้น $a && $b คำนวณก่อน (false) แล้ว assign ให้ $val
$val = $a and $b: and precedence ต่ำกว่า = ดังนั้น $a (=10) assign ให้ $val ก่อน แล้วค่อยทำ and (แต่ผลไม่ถูก assign) $val จึงเป็น 10 (true)
สรุป: && และ AND ทำงานตรรกะเหมือนกัน แตกต่างแค่ precedence: && สูงกว่า and