它有点像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
有什么想法吗?
答案 0 :(得分:4)
<?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;