首頁  >  文章  >  後端開發  >  筆記010 PHP中 == 比較運算子注意事項

筆記010 PHP中 == 比較運算子注意事項

黄舟
黄舟原創
2016-12-26 09:57:331099瀏覽

最近在進行比較運算的時候,遇到了一些問題,細節問題,平常忽略了,沒想這次問題就出來了。

PHP中的 == 比較運算子表示:當兩個資料的值相等的時候,回傳 true ,否則回傳 false。注意,這裡說的是值相當的時候,結果就為 true,也就是說,這裡並不會去比較值的型別。如:12 == '12' 結果會是 true。

由於PHP變數的弱型,很多時候並沒有去刻意地管變數的類型是什麼,而這次出現的問題則就是因為變數類型導致的。

我的問題是出現在使用 array_search 函數的時候。

array_search 的作用是用給定的值到一個資料中進行檢索,說值存在,則傳回該值對應的索引。若該值出現多次,則傳回第一個檢索到的索引。若值不存在,則傳回 false。

我的問題出現在類似以下的環境:

<?php$testA = array(   
 &#39;a&#39; => &#39;123&#39;,   
  &#39;b&#39; => &#39;iphp8.com&#39;,   
   &#39;c&#39; => &#39;014778&#39;,   
   &#39;d&#39; => &#39;14778&#39;,
);
   echo array_search(&#39;14778&#39;, $testA);

這時得到的結果會是 c。

由於預設情況下,array_search 並不會去比較值的類型,也就是做 == 比較。純數字的時候,就算是字串,貌似也是轉為數字進行比較,所以不管有多少個前置0,都沒有關係,"14778" 和 "014778"就是相等的,所以上面的例子中,返回的結果是 c,而不是我們認為的 d。

這個時候,為了得到我們想要的結果,就需要進行 === 比較了,既要比較值,也要比較類型。

而對於 array_search 來說,我們給它的第三個參數給 true 值就可以全等比較了。

 以上就是筆記010 PHP中 == 比較運算子注意事項的內容,更多相關內容請關注PHP中文網(www.php.cn)!


陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn