检查数组元素是否在不同的数组中


Check if array elements are in a different array

我试图创建一个函数返回true如果$array1中的所有项目都在$array2中,如果不返回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]);

function checkArray($arr, $arr2) {
    return !count(array_diff($arr, $arr2));
}

array_diff:返回一个包含$arr中没有出现在$arr2中的所有条目的数组。http://php.net/manual/en/function.array-diff.php

我真的不确定array_diff在任何方面是有用的。所以谁在乎是否存在差异呢?你不是在比较数组,至少这不是我对问题的理解。您想知道一个数组是否包含另一个数组

PHP有一个方便的函数来处理
function checkArray($arr, $arr2) {
    return (array_intersect($arr, $arr2) == $arr);
}