我正在尝试创建一个函数,如果$ array1中的所有项都在$ array2中,则返回true,否则返回false。
我正在尝试做什么:
$array1 = ['1', '3', '9', '17'];
$array2 = ['1', '2', '3', '4', '9', '11', '12', '17'];
function checkArray($arr, $arr2) {
If all elements in $arr are in $arr2 return true
else return false
}
if (checkArray($array1, $array2) {
// Function returned true
} else {
// Function returned false
}
我想不出怎么做!非常感谢。
解决方案:
function checkArray($needles, $haystack) {
$x = array_diff($needles, $haystack);
if (count($x) > 0) {
return false;
} else {
return true;
}
}
// Returns false because more needles were found than in haystack
checkArray([1,2,3,4,5], [1,2,3]);
// Returns true because all needles were found in haystack
checkArray([1,2,3], [1,2,3,4,5]);
答案 0 :(得分:2)
function checkArray($arr, $arr2) {
return !count(array_diff($arr, $arr2));
}
array_diff :返回一个数组,其中包含$arr
中不存在的$arr2
中的所有条目。 http://php.net/manual/en/function.array-diff.php
答案 1 :(得分:1)
我不确定array_diff在任何方面都有用。 那么谁在乎是否存在差异?你不是在比较数组,或者至少那不是我在问题中理解的。您想知道一个阵列是否包含另一个。
PHP有一个方便的功能
function checkArray($arr, $arr2) {
return (array_intersect($arr, $arr2) == $arr);
}