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


if elements of array 1 exists in array 2

这有点像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

任何想法?

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

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

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

或者使用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?

也可以使用for循环。

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