Подтвердить что ты не робот

Объединение двух json в PHP

У меня есть два 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

спасибо.

4b9b3361

Ответ 1

Что-то вроде 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 и посмотрите мой комментарий ниже. Извините, что нужно выйти сейчас:( Это выглядит как полное правильное решение: fooobar.com/questions/411065/...

Ответ 2

Удалось бросить это вместе. Скорее всего, это лучшее решение, но это самое близкое, что я получил.

$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"}]

Ответ 3

Это работает как прелесть для меня

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)));