2011-11-30 103 views
2

如果0可能是从array_search()返回的可能的密钥,那么测试数组中是否存在使用此函数(或任何php函数;如果存在一个更好的,请分享)?使用array_search()检查数组中是否存在值

我试图做到这一点:

if(array_search($needle, $haystack)) //... 

不过,当然,将返回false如果$needle是数组中的第一个元素。我想我要问的是,在这个if声明中我可以做些什么窍门让它像我想要的那样行事?我试图做这些,但他们都没有工作:

$arr = array(3,4,5,6,7); 

if(array_search(3, $arr) != false) //... 

if(array_search(3, $arr) >= 0) //... 

欣赏的帮助。

回答

5

作为替代===!==,你也可以使用in_array

if (in_array($needle, $haystack)) 
+0

好的选择。唯一的缺点是要获得职位,你必须调用另一个职能。 –

+0

啊!这就是我一直在寻找的:) Thx! –

+0

@AurelioDeRosa不需要钥匙:) –

11

这是这样的:

if(array_search(3, $arr) !== false) 

注意使用=== PHP运营商,称为相同(在这种情况下不相同)。您可以在official doc中阅读更多信息。你需要使用它,因为使用相等的运算符,你不能区分0和false(或者null或'')。

如果发现匹配,并且要使用的整数值更好的解决方案是:

if (($pos = array_search(3, $arr)) !== false) 
{ 
    // do stuff using $pos 
} 
+0

哇靠。这是所有时间中最快的回答 –

+0

@碎片机很高兴你喜欢它:p –

+0

非常感谢! –