如何检查一个数组元素是否完全存在于php中的另一个数组中

时间:2012-05-18 10:27:45

标签: php arrays

我有两个数组,例如:

array1={1,2,3,4,5,6,7,8,9};
array2={4,6,9}

是否有任何功能可以确定array2array1完全存在?

我知道我可以在循环中使用in_array()函数,但是在我将拥有包含数百个元素的大型数组的情况下,我正在搜索函数。

4 个答案:

答案 0 :(得分:10)

尝试:

$fullyExists = (count($array2) == count(array_intersect($array2, $array1));

array_intersect.php函数将仅返回所有其他参数中存在的第二个数组的元素(在这种情况下仅为第一个数组)。因此,如果交集的长度等于第二个数组的长度,则第二个数组完全包含第二个数组。

答案 1 :(得分:1)

你可以使用array_intersect,但你必须要小心。

如果要匹配的数组没有重复项,则可以使用

// The order of the arrays matters!
$isSubset = count(array_intersect($array2, $array1)) == count($array2);

然而,如果例如这不起作用, $array2 = array(4, 4)。如果重复是一个问题,您还需要使用array_unique

$unique = array_unique($array2);
// The order of the arrays matters!
$isSubset = count(array_intersect($unique, $array1)) == count($unique);

数组顺序重要的原因是作为array_intersect的第一个参数给出的数组必须没有重复。如果切换参数,此要求将从$array2移至$array1,这很重要,因为它可以更改函数的行为。

答案 2 :(得分:0)

快速简便的解决方案:

 array_diff(array(1,2,3,4,5,6,7,8,9),array(4,6,9));

如果返回是一个空数组,则它在数组中,否则他将输出不是

的项目

答案 3 :(得分:0)

我没有尝试使用复杂的阵列,而是为我比较工作

var_dump(array(1,2,3,4,5,6,7,8,9) === array(4,6,9));
var_dump(array(1,2,3,4,5,6,7,8,9) === array(1,2,3,4,5,6,7,8,9));