Есть 2 JSON по типу:
"item":
[{ "id": "550",
"name": "Серега"
}]
И второй JSON:
"item":
[{ "id": "550",
"city": "LA"
}].
Собственно, как их вывести в одном цикле? Чтоб по id подставлялись недостающие ключи и значения, либо привести их к виду:
"item":
[{ "id": "550",
"name": "Серега",
"city": "LA"
}].
$a = json_decode('{"item":
[{ "id": "550",
"name": "Серега"
}]}', true);
$b = json_decode('{"item":
[{ "id": "550",
"city": "LA"
}]}', true);
print_r(array_replace_recursive($a, $b));
Все гениальное, просто)
Вам нужно создать отдельный массив, куда вы внесёте все общие значения.
Через $data[]=...
Можно декодировать json с помощью json_decode и использовать array_merge.
$a = '{"item":
[{ "id": "550",
"name": "Серега"
},
{ "id": "551",
"name": "Серег"
}]}';
$b = '{"item":
[{ "id": "550",
"city": "LA"
},
{ "id": "551",
"city": "LA"
}]}';
// Get assoc arrays
$a_val = json_decode($a, true);
$b_val = json_decode($b, true);
$arr = [];
foreach($a_val['item'] as $k => $v){
// Merge array
$arr [] = array_merge($a_val['item'][$k], $b_val['item'][$k]);
}
// Create new JSON with array
$res = json_encode(['item' => $arr], JSON_UNESCAPED_UNICODE);
print_r($res);
json_decode(array, assoc) - получаем ассоциативный массивarray_merge(arr1, arr2) - соединяет два или более массиваjson_encode(array) - возвращает JSON - представление данныхПочитать о array_merge
Сборка персонального компьютера от Artline: умный выбор для современных пользователей