【问题标题】:How to serarch for multiple values in a array where some values are optional如何在某些值是可选的数组中搜索多个值
【发布时间】:2014-04-04 10:37:11
【问题描述】:

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

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;
}

只有当两个指针(管理员和经理)都匹配干草堆($user->roles)时,这将返回 true。 还是我在这里遗漏了什么?

【问题讨论】:

标签: php arrays


【解决方案1】:

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

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

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

【讨论】:

  • 把 PHP 5.4 短数组语法抛给我一秒钟——仍然不习惯在 JS 领域之外正常看到它。
  • 这解决了我的问题,谢谢。我不知道“(bool)array_intersect()”语法,以这种方式在函数外部使用bool。有趣...
猜你喜欢
  • 1970-01-01
  • 2013-12-18
  • 1970-01-01
  • 1970-01-01
  • 2010-11-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多