ความแตกต่างระหว่าง AND และ &&

AND && OR และ || เป็น Logical Operators ของ PHP
$a AND $b = true ถ้า $a และ $b เป็น true ทั้งสองตัว
$a && $b = true ถ้า $a และ $b เป็น true ทั้งสองตัว
$a OR $b = true ถ้า $a หรือ $b ตัวใดตัวหนึ่งเป็น true
$a || $b = true ถ้า $a หรือ $b ตัวใดตัวหนึ่งเป็น true

ทั้ง AND และ && มีข้อแตกต่างกันเล็กน้อย
$a = true && false;
$b = true AND false;
var_dump($a, $b);

ผลลัพท์เป็นตามด้านล่าง
boolean false
boolean true

และ
$a = false || true;
$b = false OR true;
var_dump($a, $b);

ผลลัพท์เป็นตามด้านล่าง เช่นกัน
boolean true
boolean false

เหตุที่ทั้ง AND และ && (รวมถึง OR และ ||) ด้วยให้ผลลัพท์แตกต่างกันเป็นเพราะลำดับการทำงานของ Operator ครับ โดยที่เครื่องหมาย && และ || จะถูกปฏิบัติก่อน = และตามด้วย AND หรือ OR ในลำดับถัดมา ตามนี้ http://php.net/manual/en/language.operators.precedence.php ดังนั้นผลลัพท์ในกรณีนี้คือ (วงเล็บด้านในจะถูกปฏิบัติก่อน)
// true && false จะถูกปฏิบัติก่อน ได้ false แล้วส่งผลลัพท์ให้ $a
($a = (true && false));
// true จะส่งให้กับ $b เลย ส่วนคำสั่ง AND false ไม่ได้มีการรับค่า
(($b = true) AND false);
// false || true จะถูกปฏิบัติก่อน ได้ true แล้วส่งผลลัพท์ให้ $a
($a = (false || true));
// false จะส่งให้กับ $b เลย ส่วนคำสั่ง OR true ไม่ได้มีการรับค่า
(($b = false) OR true);

สรุป ผมแนะนำให้ใช้ && แทน AND และ || แทน OR ครับ เพราะจะให้ผลลัพท์ที่คาดเดาได้มากกว่า
ผู้เขียน goragod โพสต์เมื่อ 28 พ.ย. 2558 เปิดดู 12,728 ป้ายกำกับ PHP
^