array_diff
array_diff — 计算数组的差集
说明
array_diff(array $array, array ...$arrays): array
对比 array 和其他一个或者多个数组,返回在 array 中但是不在其他 array 里的值。
但是只能计算一维数组的差异,无法计算多为数组差异。
array_deep_diff
array_deep_diff(array $array, array ...$arrays): array
可以计算多维数组差异 代码如下:
function array_deep_diff($array1, $array2, ...$arrays)
{
$diff_array = [];
foreach ($array1 as $k1 => $v1) {
if (!isset($array2[$k1]) || (is_array($v1) && !is_array($array2[$k1]))) {
$diff_array[$k1] = $v1;
} else {
if (is_array($v1)) {
$new_diff = self::deepDiff($v1, $array2[$k1]);
if ($new_diff) $diff_array[$k1] = $new_diff;
} else if ($v1 != $array2[$k1]) {
$diff_array[$k1] = $v1;
}
}
}
if (!empty($arrays)) {
return array_deep_diff($diff_array, ...$arrays);
}
return $diff_array;
}
|