使用array_search()检查数组中是否存在值

Nic*_*ndo 2 php

如果0可能是从中返回的可能键array_search(),那么测试元素是否存在于使用此函数的数组(或任何php函数;如果有更好的函数,请分享)的最佳方法是什么?

我试图这样做:

if(array_search($needle, $haystack)) //...
Run Code Online (Sandbox Code Playgroud)

但是,false如果$needle是数组中的第一个元素,那当然会返回.我想我要问的是,在这个if声明中我能做些什么来让它表现得像我想要的那样?我试过这些,但没有一个工作:

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

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

if(array_search(3, $arr) >= 0)  //...
Run Code Online (Sandbox Code Playgroud)

感谢帮助.

Aur*_*osa 13

这是方式:

if(array_search(3, $arr) !== false)
Run Code Online (Sandbox Code Playgroud)

请注意===PHP运算符的使用,称为相同(在本例中不相同).您可以在官方文档中阅读更多信息.你需要使用它,因为使用等于运算符你不能区分0和false(或者null或'').

如果找到匹配并想要使用整数值,则更好的解决方案是:

if (($pos = array_search(3, $arr)) !== false)
{
   // do stuff using $pos
}
Run Code Online (Sandbox Code Playgroud)


Abh*_*ert 7

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

if (in_array($needle, $haystack))
Run Code Online (Sandbox Code Playgroud)