我有一个数组:
{
"zone1":{
"foo1":"bar1",
"foo2":"bar2",
"foo3":"bar3",
"foo4":"bar4"
},
"zone2":{
"newfoo1":"newbar1",
"newfoo2":"newbar2",
"newfoo3":"newbar3",
"newfoo4":"newbar4"
},
"zone3":{
"morefoo1":"morebar1",
"morefoo2":"morebar2",
"morefoo3":"morebar3",
"morefoo4":"morebar4"
}
}
Run Code Online (Sandbox Code Playgroud)
我想将第二个数组与更新后的值合并:
{
"zone1":{
"foo1":"updatedbar1"
},
"zone3":{
"morefoo2":"updatedbar2",
"morefoo4":"updatedbar4"
}
}
Run Code Online (Sandbox Code Playgroud)
我已经尝试了很多东西,我现在使用的是这个php代码:
$array3 = array_merge($array1, $array2);
Run Code Online (Sandbox Code Playgroud)
但是这段代码给了我这个:
{
"zone1":{
"foo1":"updatedbar1"
},
"zone2":{
"newfoo1":"newbar1",
"newfoo2":"newbar2",
"newfoo3":"newbar3",
"newfoo4":"newbar4"
},
"zone3":{
"morefoo2":"updatedbar2",
"morefoo4":"updatedbar4"
}
}
Run Code Online (Sandbox Code Playgroud)
我想要的只是用第二个数组上的值更新第一个数组,而不丢失任何数据。数组是json,它们来自json文件,但语言是PHP。
您可以使用array_replace_recursive():
$array3 = array_replace_recursive($array1, $array2);
Run Code Online (Sandbox Code Playgroud)
它使用您的数据创建以下数组:
Array
(
[zone1] => Array
(
[foo1] => updatedbar1
[foo2] => bar2
[foo3] => bar3
[foo4] => bar4
)
[zone2] => Array
(
[newfoo1] => newbar1
[newfoo2] => newbar2
[newfoo3] => newbar3
[newfoo4] => newbar4
)
[zone3] => Array
(
[morefoo1] => morebar1
[morefoo2] => updatedbar2
[morefoo3] => morebar3
[morefoo4] => updatedbar4
)
)
Run Code Online (Sandbox Code Playgroud)
在ideone上查看。