大家都知道一维数组计算差集的内置函数是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));