PHP判斷陷阱, PHP字符串和數字比較陷阱, in_array函數判斷類型陷阱, PHP陷阱

在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’){
//請求成功
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章