php find the difference of two-dimensional arrays | compare the different array_diff of two-dimensional arrays

array_diff is only valid for one-dimensional arrays, not for two-dimensional arrays (evaluated as empty or array(0)).
The manual states: 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; 



//Modified by doudoukiki, the efficiency is much improved

print_r ( array_diff_assoc2_deep ( $a1 $a2 )); 

?> 

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=325979016&siteId=291194637
Recommended