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'){
    //請求成功
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章