Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/240.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在一些值是可选的数组中搜索多个值_Php_Arrays - Fatal编程技术网

Php 如何在一些值是可选的数组中搜索多个值

Php 如何在一些值是可选的数组中搜索多个值,php,arrays,Php,Arrays,有没有更好的方法在一个php数组中搜索一个或多个neeldes匹配haystack? 此代码可以工作,但不可扩展 if(在_数组中('administrator',$user->roles)| _数组中('manager',$user->roles)){ $trusted=TRUE; } 我知道我可以在数组中使用数组,但只有在所有指针匹配的情况下,它才会返回true。 例如: if(在_数组(数组('administrator','manager'),$user->roles)中){ $tru

有没有更好的方法在一个php数组中搜索一个或多个neeldes匹配haystack? 此代码可以工作,但不可扩展

if(在_数组中('administrator',$user->roles)| _数组中('manager',$user->roles)){
$trusted=TRUE;
}
我知道我可以在数组中使用数组,但只有在所有指针匹配的情况下,它才会返回true。 例如:

if(在_数组(数组('administrator','manager'),$user->roles)中){
$trusted=TRUE;
}
只有当两个指针(管理员和管理员)都与haystack($user->roles)匹配时,才会返回true。
还是我在这里遗漏了什么?

您可能正在查找
数组\u intersect
。虽然它很方便,但也有点浪费(因此可以说是不雅的),所以是否使用它是你的决定

$trusted = (bool)array_intersect($user->roles, ['administrator', 'manager']);

我正在将结果数组强制转换为bool,因为它符合示例的语义(如果找到任何角色,结果将为非空,并转换为
true
)。

您看过
preg\u grep
?:-它允许您将数组值与RegExp模式进行匹配。谢谢,但是使用preg_grep感觉像是偏头痛的保证:-)让我暂时想起了PHP5.4短数组语法-仍然不习惯在JS land之外看到它。这解决了我的问题,谢谢。我不知道“(bool)array_intersect()”语法,在函数外部以这种方式使用bool。有趣的。。。