【发布时间】:2015-09-19 17:54:29
【问题描述】:
我有一个表单,它提交一组用户角色以供服务器处理。以下是表单发布的$data['roles'] 示例:
Array ( [0] => 5 [1] => 16 )
我想检查 $data['roles'] 是否包含值 16、17、18 或 19 之一。正如您在示例中看到的那样,它包含 16。in_array 在这里似乎是合乎逻辑的选择,但传递一个 数组 作为in_array 的指针不起作用:
$special_values = array(16, 17, 18, 19);
if (in_array($special_values, $data['roles'])) {
// this returns false
}
在数组中传递完全相同的值:
$special_values = array(5, 16);
if (in_array($special_values, $data['roles'])) {
// this also returns false
}
此外,将两个数组之间的位置切换为 needle 和 haystack 不会改变结果。如果我只是问 16 是否在数组中,它可以正常工作:
$special_value = 16;
if (in_array($special_value, $data['roles'])) {
// this returns true
}
documentation 给出了使用数组作为指针的示例,但是似乎大海捞针中的结构需要完全相同才能返回true。但是我不明白为什么我的第二个例子不起作用。我显然在这里做错了什么或遗漏了一些东西。
检查一个数组中的任何个值是否存在于另一个数组中的最佳方法是什么?
编辑: This question(可能重复)不是在问同样的事情。我想将一个数组中的任何值与另一个数组中的任何值进行匹配。链接的问题希望将一个数组中的所有值与另一个数组的值进行匹配。
【问题讨论】:
-
array_intersect是您正在寻找的。span> -
array_intersect() 可能是更合乎逻辑的选择
-
谢谢大家。我想得到一个真假结果,
array_intersect给出了一个匹配数组,但我想我可以检查ifarray_intersect的结果是否为空,如果不是,请执行我的逻辑? -
@BenFortune 感谢您的链接,但是在那个问题中,他想检查针中的 all 值是否在大海捞针中。在我的示例中,我只想知道针中的 any 值是否存在于大海捞针中。