2014-10-17 141 views
1

我發現了一些有趣的關於PHP的array_search功能,想知道是否有人能告訴我怎麼解決這個問題:PHP array_search:如何將key == 0與false區分開來?

它說,在docs是該函數返回鍵時,該值在數組中,否則返回false。

的問題是,如果你有一個數組,如:

$arr = array(0 => "red", 1 => "blue", ...); 

,並使用array_search查找值紅色,那麼關鍵0將返回。

然而,問題是,如果您使用函數的結果來查找是否在數組中找到某個元素,那麼如果該值返回0(因爲實際上發現了具有鍵0的元素,則返回0) ,它在PHP中的處理方式與該函數返回false時的處理方式相同。換句話說:

if (array_search("red", $arr) == false) 

如果相同:

if (array_search("red", $arr) == 0) 

例外是,在一種情況下,元件無法找到和在第二種情況下,一個因素是也許發現哪個鍵是0.

所以我的問題是,這個問題的解決方案是什麼?

+6

使用標識比較:'==='。 – lafor 2014-10-17 22:00:06

+0

太棒了!謝謝。我可以建議你發佈這個答案。 – user18490 2014-10-17 22:00:44

+2

在你分享的鏈接中有一個警告框。閱讀。 – HamZa 2014-10-17 22:01:10

回答

2

PHP manual

這個函數可以返回布爾值FALSE,但也可能返回的值爲FALSE一個 非布爾值。請閱讀關於 布爾部分的更多信息。 使用===運算符來測試 這個函數的返回值。

+0

RTFM的答案與FM的全部引用無關。 – 2016-07-07 02:01:26