此问题已在此处有答案:
How to merge two multidimensional arrays without overwriting existing keys in PHP?(3个答案)
3天前关闭。
我有两个嵌套对象的json对象,我需要将它们合并到一个对象中,用第二个对象中的值覆盖原始值。
第一个JSON
{
"field 1" : {
"key 1": "value 1",
"key 2": {
"subkey 1": "subvalue 1",
"subkey 2": "subvalue 2"
},
"key 3": "value 3"
},
"field 2": {
"key 4": "value 4",
"key 5": "value 5"
},
"field 3": {
"key6": "value 6"
}
}
第二个JSON,只包含与第一个JSON值不同的字段
{
"field 1" : {
"key 1": "value 10",
"key 2": {
"subkey 2": "subvalue 20"
}
},
"field 2": {
"key 4": "value 40"
}
}
预期结果,第一个JSON的值修改了第二个JSON
{
"field 1" : {
"key 1": "value 10",
"key 2": {
"subkey 1": "subvalue 1",
"subkey 2": "subvalue 20"
},
"key 3": "value 3"
},
"field 2": {
"key 4": "value 40",
"key 5": "value 5"
},
"field 3": {
"key6": "value 6"
}
}
我已经尝试过array_merge,但是当它在两个对象中找到相同的键时,用第二个的值替换第一个的值。在这种情况下,结果是来自第二JSON的字段1和字段2以及来自第一JSON的字段3。
Array_merge_recursive则将第二个值添加到第一个值中,例如,对于“key1”,值变为
"[value 1, value 10]"
有什么帮助吗?
Ps.在这个例子中,我使用了只有两个级别的JSON对象,但也可以有更多级别
1条答案
按热度按时间sbtkgmzw1#
我认为你希望数组替换而不是合并。
输出
检查https://www.php.net/manual/en/function.array-replace-recursive