php检查数组是否是另一个数组的一部分

php检查数组是否是另一个数组的一部分,php,arrays,Php,Arrays,如果我有: $hold = array(1, 1, 4); // this will be true $allArr = array(1, 1, 3, 4, 5); $containsHold = count(array_intersect($hold, $allArr)) == count($hold); $containhold是正确的,但如果我有下一个: $hold = array(1, 1, 1); // this will be false but it is true $allAr

如果我有:

$hold = array(1, 1, 4); // this will be true
$allArr = array(1, 1, 3, 4, 5);
$containsHold = count(array_intersect($hold, $allArr)) == count($hold);
$containhold是正确的,但如果我有下一个:

$hold = array(1, 1, 1); // this will be false but it is true
$allArr = array(1, 1, 3, 4, 5);
$containsHold = count(array_intersect($hold, $allArr)) == count($hold);

这个返回值为true,但我需要为false,因为$hold包含三个1

如果我的uderstand正确,您应该计算每个数组的值 然后比较数值和计数……:

function arrayContainArray($array, $array1){
    $c = array_count_values($array);
    $c1 = array_count_values($array1);
    foreach($c as $k=>$n){
        if(!isset($c1[$k]) || $c1[$k]<$n){ return false; }
    }
    return true;
}

$containsHold = arrayContainArray($hold, $allArr);
函数arrayContainArray($array,$array1){
$c=数组\计数\值($array);
$c1=数组计数值($array1);
foreach($c为$k=>$n){

如果(!isset($c1[$k])| |$c1[$k]首先阅读php数组,然后再问这个问题。您仍然在array_intersect(php数组函数)文档中得到了答案。如果无法理解,请尝试此链接:-这不是我示例的答案。请尝试$hold=array(1,1);此with array_intersect返回true!