-1

如何比较两个数组$required$found查看 $required 的所有元素是否都存在于 $found 中?我不在乎是否有更多元素 in $found,只要这些元素在$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'
);

即使 中有更多元素,array_intersect()也会起作用$found吗?如果是,你能举个例子吗?通过阅读文档,我无法 100% 理解如何。

4

2 回答 2

1

您只需要确保 intersect 中的元素数量与$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
于 2013-06-08T17:13:24.897 回答
1

不,不会的。array_intersect将为您提供手册页上描述的交叉点。

因此,为了实现您的目标,您还必须检查结果是否array_intersect具有相同数量的元素$required

我不知道 stdlib 中的一个函数可以做到这一点,但是,在更大的数组上,我猜你可能会更好(性能方面)使用专门为此设计的自定义函数。

于 2013-06-08T17:10:34.370 回答