这是array_search的一个bug吗?


Is this a bug with array_search?

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

不回显任何内容。但是:

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

回声测试?

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(按照文档建议)代替:

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

可以使用(in_array)函数检查var是否在数组中

:

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