前几天在群里看到友友再问多维数组比较差异,所以把之前总结的方法贴出来以供参考,希望可以帮助大家。
<?php * 数据比较返回差集 * @param $array1 * @param $array2 * @return array */ public static function category_array_diff($array1, $array2) { $arr = $arr2 = $result = array(); foreach ($array1 as $index => $item) { $arr[] = serialize($item); } foreach ($array2 as $index => $item) { $arr2[] = serialize($item); } foreach (array_diff($arr,$arr2) as $index => $item) { $result[] = unserialize($item); } return $result; } //另一种算法 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; } print_r(array_diff_assoc2_deep($a1, $a2));
Last modification:February 28, 2022
© Allow specification reprint
Comment here is closed