PHP检查是否在另一个数组中找到了一个数组的所有元素

时间:2013-06-08 17:03:10

标签: php arrays

如何比较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%理解如何。

2 个答案:

答案 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