由於php的參數特性為動態型別,所以有時候php會自動幫我們做型別的調整
例如: if( 1=="1" ) 結果為 true
但是 if( 1==="1") 結果可是為 false的唷
原因是 1 是數值, "1"是字串, 這兩個是不同的型別, 而=== 則是告訴系統,不用幫我轉換型別,要用原始的型別來比較‧
判斷式
結果
$a == $b 等於 if( 1=="1" ) TRUE
$a === $b 完全等於 if( "1"==="1" ) TRUE ;
if( 1==="1" ) FALSE
$a != $b 不等於 if( 1 != 2 ) TRUE ;
if( 1 != "2" )TRUE ;
if( 1 != 1 ) FALSE ;
if( 1 != "2" ) FALSE
$a <> $b 不等於 同上
$a !== $b 不完全等於 if( 1 !== "2" ) TRUE ;
if( 1 !== 2 ) FALSE ;
$a < $b 小於 if( 1 < 2 ) TRUE ;
if( 1 < "2" ) TRUE ;
if( 2 < 2 ) FALSE ;
if( 2 < 1 ) FALSE ;
$a > $b 大於 if( 2 > 1 ) TRUE ;
if( 2 > "1" ) TRUE ;
if( 2 > 2 ) FALSE ;
if( 1 > 2 ) FALSE ;
$a <= $b 小等於 if( 1 <= 2 ) TRUE ;
if( 2 <= "2" ) TRUE ;
if( 2 <= 1 ) FALSE ;
$a >= $b 大等於 if( 2 >= 1 ) TRUE ;
if( 2 >= "2" ) TRUE ;
if( 1 >= 2 ) FALSE ;
<?php
var_dump(0 == "a"); // 0 == 0 -> true
var_dump("1" == "01"); // 1 == 1 -> true
var_dump("1" == "1e0"); // 1 == 1 -> true
switch ("a") {
case 0:
echo "0";
break;
case "a": // never reached because "a" is already matched with 0
echo "a";
break;
}
?>