如果数组1的元素存在于数组2中

时间:2011-04-11 12:49:21

标签: php arrays

它有点像in_array但是当in_array检查数组中是否存在一个元素并相应地返回true和false时,我想知道array1的所有元素是否都是array2的一部分。

前:

$array1 = array(3, 30);
$array2 = array(5, 30);
$array3 = array(5, 50);

$array = array(50,7,8,456,1,5,567);

function new_in_array($array1,$array) // false
function new_in_array($array2,$array) // false
function new_in_array($array3,$array) // true

有什么想法吗?

4 个答案:

答案 0 :(得分:4)

array_intersect会:

<?php
$first = array('foo', 'bar');
$second = array('foo', 'bar','baz');

var_dump(array_intersect($first, $second) === $first); // True

$first = array('foo', 'bar', 'hello');
$second = array('foo', 'bar','baz');

var_dump(array_intersect($first, $second) === $first); // False

答案 1 :(得分:2)

使用array_intersect与这两者相交并检查返回数组中的元素数量:

$intersect = array_intersect($array1, $array2);
if (count($intersect) == count($array1)) {
   // array1 is fully contained in array2
}

答案 2 :(得分:2)

或使用array_diff()

function array_contains($haystack, $needles) {
  return !count(array_diff($needles, $haystack));
}

array_contains($array2, $array1); // all elements of array1 is part of array2?

答案 3 :(得分:0)

你也可以使用for循环。

for ($i = 0; $i < sizeof($array1); $i++) {
  if (!in_array($array1[$i], $array2)) {
    return False;
  }
}
return True;