更新时间:2022-10-19 14:00:56
函数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;
}