如何比较2个数组$required
和$found
,看看$ found中是否存在$ required的所有元素?我不在乎$found
中是否有更多元素,只要$required
个元素属于。{/ p>
我不认为给出一个特定的数组示例会有所作为,但在这里它们是:
$required = array (
0 => 'this',
1 => 'element',
2 => 'is',
3 => 'required'
);
$found = array (
0 => 'this',
1 => 'required',
2 => 'be',
3 => 'is',
4 => 'extra',
5 => 'element'
);
即使$found
中有更多元素,array_intersect()也可以解决这个问题吗?如果是的话,请你提供一个例子吗?通过阅读文档,我无法100%理解如何。
答案 0 :(得分:1)
不,不会。 array_intersect
将为您提供手册页中所述的交集。
因此,要实现目标,您还必须检查array_intersect
的结果是否与$required
具有相同的元素数量。
我不知道stdlib中的一个函数会做到这一点,但是,对于较大的数组,我猜你可能会更好地(性能明智)使用为此设计的自定义函数。
答案 1 :(得分:1)
您只需确保交叉中元素的数量与$required
中的元素数量相同。例如:
$required = array (
0 => 'this',
1 => 'element',
2 => 'is',
3 => 'required'
);
$found = array (
0 => 'this',
1 => 'required',
2 => 'be',
3 => 'is',
4 => 'extra',
5 => 'element'
);
var_dump(count(array_intersect($required, $found)) === count($required)); // true
var_dump(count(array_intersect($required, array('that'))) === count($required)); // false