在PHP中使用 === 全等判斷之前都一定要做數據類型判斷
我們來看幾個例子:
$str = 'a';
$arr = array(0,1,2);
var_dump($str == 0); //返回結果bool(true)
var_dump(in_array($str, $arr)); //返回結果bool(true)
var_dump(in_array($str, $arr, true)); //返回結果bool(false)
第一個和第二個返回true,是因爲’a’與0進行比較的時候,會將字符串轉換爲整型來比較,字符串轉換爲整型結果爲 int 0
第二個中,in_array中第三個參數爲true時表示設置嚴格類型比較,是要比較類型的,也就是”===”全等比較。
其他應用場景與問題:
很多時候我們在做接口的時候會以返回碼爲0表示請求成功,比如:
if ($res[“code”] == 0 ){
//請求成功
}
這樣做的問題是,當$res[“code”]爲非0字符串是也是成功的,這就有問題了。
解決方法,將兩邊都強制轉化爲字符串進行全等比較
if ((string)$res[“code”] === ‘0’){
//請求成功
}