多維數組計算差集
大家都知道一維數組計算差集的內置函數是array_diff_assoc($array1, $array2),可是多維數組怎樣計算差集呢,就須要寫一個對應的算法。
我寫了一個算法供大家參考。
<?php //多維數組的差集 function array_diff_assoc_recursive($array1,$array2){ $diffarray=array(); foreach ($array1 as $key=>$value){ //推斷數組每一個元素是否是數組 if(is_array($value)){ //推斷第二個數組是否存在key if(!isset($array2[$key])){ $diffarray[$key]=$value; //推斷第二個數組key是否是一個數組 }elseif(!is_array($array2[$key])){ $diffarray[$key]=$value; }else{ $diff=array_diff_assoc_recursive($value, $array2[$key]); if($diff!=false){ $diffarray[$key]=$diff; } } }elseif(!array_key_exists($key, $array2) || $value!==$array2[$key]){ $diffarray[$key]=$value; } } return $diffarray; } $array1=array(1,2,3,array(1,2,array(1))); $array2=array(1,2,4,array(1,2,3)); print_r(array_diff_assoc_recursive($array1,$array2));
多維數組計算差集