>> รู้หมือไร่ <<
ใน PHP มี Logical operator && และ || เหมือนกับภาษาตระกูล C ทั่วไป
แต่ก็ยังมี and และ or ด้วย (และยังมี xor อีก!)
ซึ่งหลายคนอาจจะคิดว่ามันเหมือนกัน เป็นแค่ alias เหมือน C++ (หรือ trigraph ถ้าจะเรียกให้ถูกจริงๆ)
แต่จริงๆ แล้วมันต่างกัน แล้วมันต่างกันตรงไหนล่ะ
คำตอบคือ precedence
and และ or นั้นมี precedence "ต่ำกว่า" && และ ||
ตัวอย่าง
if ($a && $b || $c and $x || $y && $z) {
// Do something ...
}
ถ้าหาก and เป็น alias ของ && จะมีความหมายว่า
if (
($a && $b) || ($c && $x) || ($y && $z)
) {
// Do something ...
}
แต่จริงๆ แล้วมีความหมาย
if (
(($a && $b) || $c) and ($x || ($y && $z))
) {
// Do something ...
}
เพราะ and มี precedence ต่ำกว่า && และ ||
ซึ่ง operator นี้แทบจะไม่ใช้กันในชีวิตจริง ที่เห็นบ่อยสุดก็คือใช้ร่วมกับ
die()
เช่น
แต่จริงๆ แล้วมันอาจจะมีประโยชน์ในการ group เงื่อนไขหลายๆ อันเข้าด้วยกันโดยไม่ต้องใช้วงเล็บเยอะ
และดูสะอาดตาอีกด้วย
Credit: Admin (phpinfo.in.th)