2013-08-01 71 views
1

我有一個數組,給了我正確的結果,當我打印出來,例如:array_search功能不檢查第一個值

[0] => [email protected], 
[1] => 0909, 
[2] => [email protected], 
[3] => 0909 

現在,當我要檢查,如果[email protected]是該數組給我一個錯誤,該值不存在於此數組中,但當我嘗試例如[email protected]時,它會給出正確的結果。

這是代碼的一小部分: $ user是我想要搜索的詞,$ arrayname是數組。

if (array_search(strtolower($user),array_map('strtolower',$arrayname))){ 
//value exist 
} 
else{ 
//value does not exist 
} 

現在[email protected]不存在它說,而[email protected]確實存在。

誰有什麼想法?

+2

的原因實際上是[文件]中的(HTTP ://php.net/manual/en/function.array-search.php)。 *「該函數可能返回布爾型FALSE,但也可能返回一個非布爾值,其值爲FALSE。有關詳細信息,請閱讀布爾部分,使用===運算符來測試此函數的返回值。 – GolezTrol

+0

因爲它會返回零 –

回答

4

array_search返回找到的值的索引。當您搜索第一個項目時,它返回0.這也意味着false。改變你的代碼,以便它讀取

if (false !== array_search(strtolower($user),array_map('strtolower',$arrayname))){ 

的另一種方法是使用in_array

if(in_array(strtolower($user),array_map('strtolower',$arrayname))){ 
+2

+1,用於添加嚴格比較。 – GolezTrol

+0

非常感謝,沒想過! – Matheno

0

我簡單地使用is_numeric

if (is_numeric(array_search(strtolower($user), $arrayname)) { 
    /* do something */ 
}