我有两个要合并的多维数组,但我想在合并过程中跳过相同的值。我尝试了几种在网络上找到的不同方法,但是对我而言,没有任何帮助。
我的初始数组比这个数组大得多,但是在这里我举个例子:
$array1 = [
"aaa" => [
"aa1"=> [
"key1"=> "value1",
"key2"=> "value2",
],
"bbb"=> [
"bb1",
"bb2",
],
"ccc"=> [
"cc1",
],
],
"ooo" => [
"oo1"
]
];
另外一个,我想在第一个合并:
$array2 = [
"aaa" => [
"bbb"=> [
"bb2",
],
"ccc"=> [
"cc2",
],
],
];
array_merge_recurisive的 print_r,使用如下方法:
print_r(array_merge_recursive($array1, $array2));
Array
(
[aaa] => Array
(
[aa1] => Array
(
[key1] => value1
[key2] => value2
)
[bbb] => Array
(
[0] => bb1
[1] => bb2
[2] => bb2
)
[ccc] => Array
(
[0] => cc1
[1] => cc2
)
)
[ooo] => Array
(
[0] => oo1
)
)
因此,结果如您所见,数组bbb
具有两个bb2
值,但我只需要一个
答案 0 :(得分:2)
以下函数将递归删除数组的重复值(编辑:仅用于非关联键):
function array_unique_recursive(array $arr) {
if (array_keys($arr) === range(0, count($arr) - 1)) {
$arr = array_unique($arr, SORT_REGULAR);
}
foreach ($arr as $key => $item) {
if (is_array($item)) {
$arr[$key] = array_unique_recursive($item);
}
}
return $arr;
}
您可以在array_merge_recursive
之后调用它。
答案 1 :(得分:0)
您可以尝试
array_unique(array_merge_recursive($ array1,$ array2),SORT_REGULAR);
答案 2 :(得分:0)
使用array_replace_recursive
代替array_merge_recursive
。