2013-03-22 89 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'; 
}