X

PHP True 與 字串型態比對的注意事項

PHP Boolean 型態的 True 與 字串做 == 的比對,可能會跟預期的不太一樣。

PHP True 與 字串型態比對的注意事項

$a = true; 而 $a 要跟字串做比對,或者字串(非 0)要跟 true 做比對,都會是 true。

主要是發生在下述的情況,預期結果都應該要印出 'b',但是結果印出 'a'

<?php
$a = true;
echo ($a == 'd' || $a == false) ? 'a' : 'b'; // a
?>

解法:使用 === 含型態判斷,因為 'd' 的字串,等同 1 也等同 true,所以要避免這個問題,使用下述作法即可。

<?php 
$a = true;
echo ($a === 'd' || $a === false) ? 'a' : 'b'; // b
?>

以下是更多的案例,可以參考看看

<?php
$a = true;
var_dump($a == 'd'); // true
var_dump($a == true); // true
var_dump($a == 1); // true
var_dump($a == 0); // false
var_dump($a == false); // false
var_dump($a === 'd'); // false
var_dump($a === false); // false
?>
Tsung: 對新奇的事物都很有興趣, 喜歡簡單的東西, 過簡單的生活.
Related Post