我们假设我们有一个嵌套的array1:
$array1=
[function_maps =>
[subid=>1,
transaction=>2
]
]
和array2看起来像这样:
$array2=
[function_maps =>
[subid=>4,
purchace=40EUR
]
]
所以我希望得到一个像这样的结果数组:
$array3=
[function_maps =>
[subid=>4,
transaction=>2,
purchace=40EUR
]
]
如您所见,array1和array2中存在的值,我们更喜欢array2值。如果没有交集,则两个值都将被带入新数组。
我怎样才能达到这个目标?知道数组可以深入(嵌套数组,最多可达3个级别)。
使用解决方案进行编辑:
来自IRC聊天的人给了我解决方案,这很容易解决这个问题:
http://php.net/manual/en/function.array-replace-recursive.php
答案 0 :(得分:1)
您需要一个递归解决方案。尝试以下功能:
function replace_recursive(array &$array1, &$array2 = null) {
$merged = $array1;
if (is_array($array2)) {
foreach ($array2 as $key => $val) {
if (is_array($array2[$key])) {
if (is_array($merged[$key])) {
$merged[$key] = replace_recursive($merged[$key], $array2[$key]);
} else {
$merged[$key] = $array2[$key];
}
} else {
$merged[$key] = $val;
}
}
}
return $merged;
}
示例:
$array1 = ['function_maps' => ['subid' => 1, 'transaction' => 2]];
$array2 = ['function_maps' => ['subid' => 4, 'purchase' => '40 EUR']];
$result = replace_recursive($array1, $array2);
print_r($result);
输出:
Array
(
[function_maps] => Array
(
[subid] => 4
[transaction] => 2
[purchase] => 40 EUR
)
)
答案 1 :(得分:0)
来自IRC聊天的人给了我解决方案,这很容易解决这个问题:
http://php.net/manual/en/function.array-replace-recursive.php