จาก manual ของ PHP ทำให้เพิ่งรู้ว่า อาจเปรียบเทียบพลาดแบบไม่รู้ตัวได้ ดังนี้
<?php
var_dump("1" ==
"01");
// 1 == 1 -> true var_dump("10" ==
"1e1");
// 10 == 10 -> true var_dump(100 ==
"1e2");
// 100 == 100 -> true
case "a":
// never reached because "a" is already matched with 0 }
?>
ถ้าเปรียบเทียบตัวแปรชนิดตัวเลข กับ ตัวอักษร
ตัวแปรชนิดที่เป็นตัวอักษรจะถูกแปลงให้เป็นตัวเลขก่อนเปรียบเทียบ
ดังนั้นจึงควรพิจารณาใช้ === or !== ซึ่งจะเปรียบเทียบชนิดของตัวแปร โดยไม่มีการแปลงค่าก่อนการเปรียบเทียบ
ไม่มีความคิดเห็น:
แสดงความคิดเห็น