如何在数组中搜索多个值,其中某些值是可选的

时间:2014-04-04 10:37:11

标签: php arrays

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

if(in_array('administrator', $user->roles) || in_array('manager', $user->roles)) {
   $trusted = TRUE;
}

我知道我可以在 in_array 中使用一个数组,但是如果所有的针都匹配,它似乎只返回true。 例如:

if(in_array(array('administrator','manager'), $user->roles) ) {
   $trusted = TRUE;
}

仅当两个针(管理员和经理)与haystack($ user-> roles)匹配时,才会返回true。 或者我在这里遗漏了什么?

1 个答案:

答案 0 :(得分:2)

您可能正在寻找array_intersect。虽然它很方便,但它也有点浪费(因此可以说是不优雅的),所以无论是否使用它都是你的号召。

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

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