У меня есть два объекта JSON, и я хочу, чтобы он был объединен в один объект JSON. Я не хочу, чтобы данные JSON были перезаписаны. Я хочу, чтобы данные были объединены.Слияние двух объектов JSON с PHP?
Объект № 1: (example1.json)
[{
"title": "xx",
"releaseYear": "2014",
},
{
"title": "yy",
"releaseYear": "2015"
}]
Объект № 2: (example2.json)
[{
"title": "yy",
"releaseYear": "2017"
}]
Это PHP File В настоящее время я являюсь используя:
<?php
$jsonString = file_get_contents('example.json');
$jsonString2 = file_get_contents('example2.json');
$data = json_decode($jsonString, true);
$data2 = json_decode($jsonString2, true);
$op = array_merge_recursive($data, $data2);
$resJson = json_encode($op);
file_put_contents('example3.json', $resJson);
Выход получил: (example3.json)
[
{
"title":"xx",
"releaseYear":"2014"
},
{
"title":"yy",
"releaseYear":"2015"
},
{
"title":"yy",
"releaseYear":"2017"
}
]
Обязательный выход:
[{
"title": "xx",
"releaseYear": "2014"
},
{
"title": "yy",
"releaseYear": "2017"
}]
Solutions оценили. Я новичок в Stackoverflow, поэтому извините за мое плохое форматирование, если оно есть. Заранее спасибо :)
Год выпуска не соответствует данным объектам. Это верно? Если да, значит ли это, что вы всегда должны получать более высокое значение года выпуска при совпадении заголовков при слиянии? –
Я в замешательстве, вы не хотите переписывать данные, вы хотите объединить, но результат, о котором вы просите, явно переписывается, а не просто слияния? – adeneo
перезаписан: [{ "Название": "уу", "ReleaseYear": "2017" }] Поскольку существует только один объект, он переписывает, и объединяет вторые данные в одиночку. Это то, что я имел в виду как переписывание. –