php 求二维数组的差集|比较二维数组的不同 array_diff

array_diff只针对一维数组有效,对二维数组无效(求出为空或array(0))。
手册写明是:Note: This function only checks one dimension of a n-dimensional array. Of course you can check deeper dimensions by using array_diff($array1[0], $array2[0]);
<?php 

// ARRAY 1 

$a1  = array( 
"a1"  =>  1
"a3"  => array( 
"a31"  =>  31 
), 
"a4"  => array( 
"a41"  =>  41 
), 
"a5"  => 
); 

// ARRAY 2 
$a2  = array( 
"a1"  =>  1
"a2"  =>  2
"a3"  => array( 
"a31"  =>  31
"a32"  => array( 
"a321"  =>  321
"a322"  =>  322 

), 
"a4"  => array( 
"a41"  =>  42 
), 
"a5"  => array( 
"a51"  =>  51
"a52"  =>  52 

); 

function array_diff_assoc2_deep($array1, $array2) { 
            $ret = array(); 
            foreach ($array1 as $k => $v) {     
            if (!isset($array2[$k])) $ret[$k] = $v; 
            else if (is_array($v) && is_array($array2[$k])) $ret[$k] = array_diff_assoc2_deep($v, $array2[$k]); 
            else if ($v !=$array2[$k]) $ret[$k] = $v; 
            else 
            {
                unset($array1[$k]);
            }
            
            } 
            return $ret; 



//被 doudoukiki修改过的,效率提高了很多

print_r ( array_diff_assoc2_deep ( $a1 $a2 )); 

?> 

猜你喜欢

转载自blog.csdn.net/fkedwgwy/article/details/79863314