最近在進行比較運算的時候,遇到了一些問題,細節問題,平常忽略了,沒想這次問題就出來了。
PHP中的 == 比較運算子表示:當兩個資料的值相等的時候,回傳 true ,否則回傳 false。注意,這裡說的是值相當的時候,結果就為 true,也就是說,這裡並不會去比較值的型別。如:12 == '12' 結果會是 true。
由於PHP變數的弱型,很多時候並沒有去刻意地管變數的類型是什麼,而這次出現的問題則就是因為變數類型導致的。
我的問題是出現在使用 array_search 函數的時候。
array_search 的作用是用給定的值到一個資料中進行檢索,說值存在,則傳回該值對應的索引。若該值出現多次,則傳回第一個檢索到的索引。若值不存在,則傳回 false。
我的問題出現在類似以下的環境:
<?php$testA = array( 'a' => '123', 'b' => 'iphp8.com', 'c' => '014778', 'd' => '14778', ); echo array_search('14778', $testA);
這時得到的結果會是 c。
由於預設情況下,array_search 並不會去比較值的類型,也就是做 == 比較。純數字的時候,就算是字串,貌似也是轉為數字進行比較,所以不管有多少個前置0,都沒有關係,"14778" 和 "014778"就是相等的,所以上面的例子中,返回的結果是 c,而不是我們認為的 d。
這個時候,為了得到我們想要的結果,就需要進行 === 比較了,既要比較值,也要比較類型。
而對於 array_search 來說,我們給它的第三個參數給 true 值就可以全等比較了。
以上就是筆記010 PHP中 == 比較運算子注意事項的內容,更多相關內容請關注PHP中文網(m.sbmmt.com)!