标签:io ar for sp on cti bs 算法 as
大家都知道一维数组计算差集的内置函数是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));
标签:io ar for sp on cti bs 算法 as
原文地址:http://blog.csdn.net/xingjigongsi/article/details/39930809