【发布时间】:2014-07-15 02:15:45
【问题描述】:
如何找出两个数组的差异
// ARRAY 1
$a1 = array(
"a1" => 1,
"a3" => array(
"a31" => 31
),
"a4" => array(
"a41" => 41
),
"a5" => array(
"a51" => 51,
"a52" => 52
)
);
// 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
)
);
array_diff 函数返回 ==> Array ( )
但是上面两个数组变量有很大的不同。
示例:
- 在 ARRAY1 中没有键 a2,但在 ARRAY2 中 a2 可用。
- ARRAY2 a3 包含嵌套数组(一个嵌套级别),但在 ARRAY 2 中包含两个嵌套子级别。
所以这里我想比较两个数组 n 级(即嵌套数组)
【问题讨论】:
-
您的预期输出是什么?
-
对于上述示例,系统应该说不同,
-
array_diff()只支持一维 -
对于递归,存在一个similar, answered question。请注意,两个方向的“差异”不能在单个数组中表示,因为您都有“减去”和“添加”成员。如果您想将这些更改合并到一个数组中(无论键是“添加”还是“减去”),您可以
array_merge_recursive(array_diff_recursive($a1, $a2), array_diff_recursive($a2, $a1))(documentation)