7/21/2011

PHP : Comparison Operators

จาก manual ของ PHP ทำให้เพิ่งรู้ว่า อาจเปรียบเทียบพลาดแบบไม่รู้ตัวได้ ดังนี้


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

No comments:

Post a Comment