合并2个数组没有重复键 [英] Merge 2 arrays with no duplicated keys
本文介绍了合并2个数组没有重复键的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有2个阵列像下面,并希望把它们合并起来,而不是重复键进入一个新的数组。
$ ARRAY1:
阵列
(
[0] =>排列
(
[α] =>排列
(
[P] =>排列
(
[α] => 1
) ) [A / S] =>排列
(
[P] =>排列
(
[O] => 1
) ) [A / P] =>排列
(
[P] =>排列
(
[W] => 1
[E] => 1
并[d] => 1
) ) [A / U] =>排列
(
[P] =>排列
(
[W] => 1
[E_A] => 1
[D_A] => 1
)
)
)
)
$数组2:
阵列
(
[0] =>排列
(
[A / X] =>排列
(
[P] =>排列
(
[α] => 1
) ) [A / S] =>排列
(
[P] =>排列
(
[O] => 1
) ) [A / P] =>排列
(
[P] =>排列
(
[W] => 1
[E] => 1
并[d] => 1
) ) [A / U] =>排列
(
[P] =>排列
(
[W] => 1
[E_A] => 1
[D_A] => 1
)
)
)
)
$结果= array_merge_recursive($数组1,$数组2);
$结果:
阵列
(
[0] =>排列
(
[α] =>排列
(
[P] =>排列
(
[α] => 1
)
) [A / S] =>排列
(
[P] =>排列
(
[O] =>排列
(
[0] => 1
[1] => 1
)
)
) [A / P] =>排列
(
[P] =>排列
(
[W] =>排列
(
[0] => 1
[1] => 1
) [E] =>排列
(
[0] => 1
[1] => 1
) 并[d] =>排列
(
[0] => 1
[1] => 1
)
)
) [A / U] =>排列
(
[P] =>排列
(
[W] =>排列
(
[0] => 1
[1] => 1
) [E_A] =>排列
(
[0] => 1
[1] => 1
) [D_A] =>排列
(
[0] => 1
[1] => 1
)
)
) [A / X] =>排列
(
[P] =>排列
(
[α] => 1
)
)
)
)
我怎么会去使它看起来就像这样?
阵列
(
[0] =>排列
(
[α] =>排列
(
[P] =>排列
(
[α] => 1
) ) [A / S] =>排列
(
[P] =>排列
(
[O] => 1 ) ) [A / P] =>排列
(
[P] =>排列
(
[W] => 1
[E] => 1
并[d] => 1
) ) [A / U] =>排列
(
[P] =>排列
(
[W] => 1
[E_A] => 1
[D_A] => 1
)
) [A / X] =>排列
(
[P] => 1
)
)
)
我要对这个错误的方式或者是有一些方法来打扫一下吗?举例欢迎!
感谢
解决方案
函数array_merge_recursive_unique($数组1,$数组2){
如果(空($数组1))返回$数组2; //优化基本情况 的foreach($数组2为$关键=> $值){
如果(is_array($值)及&放大器; is_array(@ $ ARRAY1 [$键])){
$值= array_merge_recursive_unique($数组1 [$键],$值);
}
$数组1 [$关键] = $价值;
}
返回$数组1;
}
I have 2 arrays like below and want to merge them together and not duplicate keys into a new array.
$array1:
Array
(
[0] => Array
(
[a] => Array
(
[p] => Array
(
[a] => 1
)
)
[a/s] => Array
(
[p] => Array
(
[o] => 1
)
)
[a/p] => Array
(
[p] => Array
(
[w] => 1
[e] => 1
[d] => 1
)
)
[a/u] => Array
(
[p] => Array
(
[w] => 1
[e_a] => 1
[d_a] => 1
)
)
)
)
$array2:
Array
(
[0] => Array
(
[a/x] => Array
(
[p] => Array
(
[a] => 1
)
)
[a/s] => Array
(
[p] => Array
(
[o] => 1
)
)
[a/p] => Array
(
[p] => Array
(
[w] => 1
[e] => 1
[d] => 1
)
)
[a/u] => Array
(
[p] => Array
(
[w] => 1
[e_a] => 1
[d_a] => 1
)
)
)
)
$result = array_merge_recursive($array1, $array2);
$result:
Array
(
[0] => Array
(
[a] => Array
(
[p] => Array
(
[a] => 1
)
)
[a/s] => Array
(
[p] => Array
(
[o] => Array
(
[0] => 1
[1] => 1
)
)
)
[a/p] => Array
(
[p] => Array
(
[w] => Array
(
[0] => 1
[1] => 1
)
[e] => Array
(
[0] => 1
[1] => 1
)
[d] => Array
(
[0] => 1
[1] => 1
)
)
)
[a/u] => Array
(
[p] => Array
(
[w] => Array
(
[0] => 1
[1] => 1
)
[e_a] => Array
(
[0] => 1
[1] => 1
)
[d_a] => Array
(
[0] => 1
[1] => 1
)
)
)
[a/x] => Array
(
[p] => Array
(
[a] => 1
)
)
)
)
How would I go about making it look like this?
Array
(
[0] => Array
(
[a] => Array
(
[p] => Array
(
[a] => 1
)
)
[a/s] => Array
(
[p] => Array
(
[o] => 1
)
)
[a/p] => Array
(
[p] => Array
(
[w] => 1
[e] => 1
[d] => 1
)
)
[a/u] => Array
(
[p] => Array
(
[w] => 1
[e_a] => 1
[d_a] => 1
)
)
[a/x] => Array
(
[p] => 1
)
)
)
Am I going about this the wrong way or is there some way to clean this up? Examples welcome!
Thanks
解决方案
function array_merge_recursive_unique($array1, $array2) {
if (empty($array1)) return $array2; //optimize the base case
foreach ($array2 as $key => $value) {
if (is_array($value) && is_array(@$array1[$key])) {
$value = array_merge_recursive_unique($array1[$key], $value);
}
$array1[$key] = $value;
}
return $array1;
}
这篇关于合并2个数组没有重复键的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文