php 求二维数组的差集

$arr1=array(array(1,2,3,4,5),array(6,7,8,9,10),array(11,12,13,14,15),array(16,17,18,19,20));
$arr2=array(array(1,2,3,4,5),array(11,12,13,14,15));

求:

$arr3=array(array(6,7,8,9,10),array(16,17,18,19,20));

$arr1=array(array(1,2,3,4,5),array(6,7,8,9,10),array(11,12,13,14,15),array(16,17,18,19,20));
$arr2=array(array(1,2,3,4,5),array(11,12,13,14,15));
$arr3=array();
foreach ($arr1 as $key => $value) {
if(!in_array($value,$arr2)){
$arr3[]=$value;
}
}
var_dump($arr3);
温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-03-02
<?php 
function arrayRecursiveDiff($aArray1, $aArray2) { 
    $aReturn = array(); 
    foreach ($aArray1 as $mKey => $mValue) { 
        if (array_key_exists($mKey, $aArray2)) { 
            if (is_array($mValue)) { 
                $aRecursiveDiff = arrayRecursiveDiff($mValue, $aArray2[$mKey]); 
                if (count($aRecursiveDiff)) { $aReturn[$mKey] = $aRecursiveDiff; } 
            } else { 
                if ($mValue != $aArray2[$mKey]) { 
                    $aReturn[$mKey] = $mValue; 
                } 
            } 
        } else { 
            $aReturn[$mKey] = $mValue; 
        } 
    } 
   
    return $aReturn; 

$arr1=array(array(1,2,3,4,5),array(6,7,8,9,10),array(11,12,13,14,15),array(16,17,18,19,20));
$arr2=array(array(1,2,3,4,5),array(11,12,13,14,15));
print_r(arrayRecursiveDiff($arr1, $arr2));
?>

第2个回答  2015-03-02
//判断2个数组是否相等
function judgeEqual($key1,$key2){
$a = array_diff($key1,$key2);
$b = array_diff($key2,$key1);
if(empty($a) && empty($b)){
return true;
}else{
return false;
}
}
$arr1=array(array(1,2,3,4,5),array(6,7,8,9,10),array(11,12,13,14,15),array(16,17,18,19,20));
$arr2=array(array(1,2,3,4,5),array(11,12,13,14,15));
$array1=$arr2[0];
$array2=$arr2[1];
for($i=0;$i<count($arr1);$i++){
if(judgeEqual($array1,$arr1[$i]) || judgeEqual($array2,$arr1[$i])){
unset($arr1[$i]);
}
}
$arr3=$arr1;
var_dump($arr3);

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网