У меня есть два json's
Первый
[{"COLUMN_NAME":"ORDER_NO","COLUMN_TITLE":"Order Number"} ,{"COLUMN_NAME":"CUSTOMER_NO","COLUMN_TITLE":"Customer Number"}]
Второй –
[{"COLUMN_NAME":"ORDER_NO","DEFAULT_VALUE":"1521"}, {"COLUMN_NAME":"CUSTOMER_NO","DEFAULT_VALUEE":"C1435"}]
Я хочу объединить их и использовать json как
[{"COLUMN_NAME":"ORDER_NO","COLUMN_TITLE":"Order Number","DEFAULT_VALUE":"1521"} ,{"COLUMN_NAME":"CUSTOMER_NO","COLUMN_TITLE":"Customer Number","DEFAULT_VALUEE":"C1435"}]
есть ли способ их слияния? Это также нормально для меня, если требуется изменение структуры в JSON
Благодарю.
Нечто вроде json_encode(array_merge(json_decode($a, true),json_decode($b, true)))
должно работать.
array_merge в официальной документации PHP
json_decode в официальной документации PHP
EDIT: попробуйте добавить true
как второй параметр в json_decode. Это преобразует объекты в ассоциативные массивы.
РЕДАКТИРОВАТЬ 2 : попробуйте array-merge-recursive
и см. Мой комментарий ниже. Извините, теперь нужно выйти из системы 🙁 Это выглядит как полное правильное решение: https://stackoverflow.com/a/20286594/1466341
Удалось бросить это вместе. Скорее всего, это лучшее решение, но это самое близкое мне.
$a = '[{"COLUMN_NAME":"ORDER_NO","COLUMN_TITLE":"Order Number"},{"COLUMN_NAME":"CUSTOMER_NO","COLUMN_TITLE":"Customer Number"}]'; $b = '[{"COLUMN_NAME":"ORDER_NO","DEFAULT_VALUE":"1521"},{"COLUMN_NAME":"CUSTOMER_NO","DEFAULT_VALUEE":"C1435"}]'; $r = []; foreach(json_decode($a, true) as $key => $array){ $r[$key] = array_merge(json_decode($b, true)[$key],$array); } echo json_encode($r);
возвращается,
[{"COLUMN_NAME":"ORDER_NO","DEFAULT_VALUE":"1521","COLUMN_TITLE":"Order Number"}, {"COLUMN_NAME":"CUSTOMER_NO","DEFAULT_VALUEE":"C1435","COLUMN_TITLE":"Customer Number"}]
Это работает как прелесть для меня
json_encode(array_merge(json_decode($a, true),json_decode($b, true)))
вот полный пример
$query="SELECT * FROM `customer` where patient_id='1111118'"; $mysql_result = mysql_query($query); $rows = array(); while($r = mysql_fetch_assoc($mysql_result)) { $rows[] = $r; } $json_personal_information=json_encode($rows); //echo $json_personal_information; $query="SELECT * FROM `doctor` where patient_id='1111118'"; $mysql_result = mysql_query($query); $rows = array(); while($r = mysql_fetch_assoc($mysql_result)) { $rows[] = $r; } $json_doctor_information=json_encode($rows); //echo $json_doctor_information; echo $merger=json_encode(array_merge(json_decode($json_personal_information, true),json_decode($json_doctor_information, true)));