php 求二维数组的差集|比较二维数组的不同 array_diff
array_diff只针对一维数组有效,对二维数组无效(求出为空或array(0))。
手册写明是:Note: This function only checks one dimension of a n-dimensional array. Of course you can check deeper dimensions by using array_diff($array1, $array2);
<?php
// ARRAY 1
$a1 = array(
"a1" => 1,
"a3" => array(
"a31" => 31
),
"a4" => array(
"a41" => 41
),
"a5" => 5
);
// 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;
}
//被 doudoukiki修改过的,效率提高了很多
print_r(array_diff_assoc2_deep($a1, $a2));
?>
页:
[1]