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」

對新奇的事物都很有興趣, 喜歡簡單的東西, 過簡單的生活.
分類: Programming,標籤: , , , , , 。這篇內容的永久連結

在〈PHP True 與 字串型態比對的注意事項〉中有 2 則留言

  1. 想到有個 PHP type comparison tables 可以對照還不錯 ^_^
    https://secure.php.net/manual/en/types.comparisons.php

Peter Dave Hello 發表迴響 取消回覆

這個網站採用 Akismet 服務減少垃圾留言。進一步瞭解 Akismet 如何處理網站訪客的留言資料