2013-03-22 46 views
-1
if(array_search('test',array('0'=>'test'))){ 
    echo 'test'; 
} 

沒有迴應任何內容。但是:這是一個數組搜索的bug嗎?

if(array_search('test',array('0'=>'random', '1'=>'test'))){ 
    echo 'test'; 
} 

回聲測試?

+4

array_search在第一種情況下返回0,這是不正確的。 – NikiC 2013-03-22 14:48:50

+1

我想你需要閱讀[array_search'的文檔](http://php.net/manual/en/function.array-search.php),特別是關於它返回的部分... – 2013-03-22 14:49:13

+1

只是刪除索引並將數組放入'array('test');' – 2013-03-22 14:50:15

回答

2

array_search()正在恢復0,它(在非嚴格的比較)是false

var_dump(array_search('test',array('0'=>'test'))); // int(0) 
var_dump(array_search('test',array('0'=>'random', '1'=>'test'))); // int(1) 

使用!== false (as the docs suggest)代替:

if(array_search('test',array('0'=>'test')) !== false){ 
    echo '1 '; 
} 
if(array_search('test',array('0'=>'random', '1'=>'test')) !== false){ 
    echo '2 '; 
} 
0

可以使用(in_array)函數來檢查,如果VAR是否排列

是這樣的:

if(in_array('test',array('0'=>'random', '1'=>'test'))){ 
echo 'exist'; 
}