Zusammenführen von zwei json in PHP

Lesezeit: 4 Minuten

Ich habe zwei jsons

Das erste ist

    [{"COLUMN_NAME":"ORDER_NO","COLUMN_TITLE":"Order Number"}
,{"COLUMN_NAME":"CUSTOMER_NO","COLUMN_TITLE":"Customer Number"}]

Zweiter ist

[{"COLUMN_NAME":"ORDER_NO","DEFAULT_VALUE":"1521"},
{"COLUMN_NAME":"CUSTOMER_NO","DEFAULT_VALUEE":"C1435"}]

Ich möchte sie zusammenführen und ein Json-Like haben

[{"COLUMN_NAME":"ORDER_NO","COLUMN_TITLE":"Order Number","DEFAULT_VALUE":"1521"}
,{"COLUMN_NAME":"CUSTOMER_NO","COLUMN_TITLE":"Customer Number","DEFAULT_VALUEE":"C1435"}]

gibt es eine Möglichkeit, sie zusammenzuführen? Es ist auch OK für mich, wenn eine Strukturänderung in JSON erforderlich ist

Danke.

  • 1 Konvertieren Sie sie in PHP-Datenstrukturen 2 Führen Sie sie zusammen 3 Konvertieren Sie sie zurück in JSON

    – Musa

    29. November 2013 um 12:49 Uhr

Zusammenfuhren von zwei json in PHP
Dunkle Seite

So etwas sollte funktionieren:

json_encode(
    array_merge(
        json_decode($a, true),
        json_decode($b, true)
    )
)

oder das gleiche wie Einzeiler:

json_encode(array_merge(json_decode($a, true),json_decode($b, true)))

array_merge in der offiziellen PHP-Dokumentation

json_decode in der offiziellen PHP-Dokumentation

BEARBEITEN: versuchen Sie es hinzuzufügen true als zweiter Parameter für json_decode. Dadurch werden Objekte in assoziative Arrays konvertiert.

BEARBEITEN 2: Versuchen array-merge-recursive und siehe meinen Kommentar unten. Entschuldigung, ich muss mich jetzt abmelden 🙁 Dies sieht nach einer vollständig korrekten Lösung aus: https://stackoverflow.com/a/20286594/1466341

  • danke für die Antwort, aber das Ergebnis ist [{“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_VALUE”:”C1435″}] es fügt den zweiten json nach dem ersten hinzu. ist es nicht möglich, nur den fehlenden Schlüssel und Wert zum ersten hinzuzufügen. Bitte sehen Sie sich mein erwartetes Ergebnis an

    – Kalipso

    29. November 2013 um 12:56 Uhr

  • siehe meine Bearbeitung oben. Das sollte näher an dem liegen, was Sie brauchen, aber ich denke, das wird Objekte als codierte Arrays in JSON als Ergebnis zurückgeben (sorry, keine Zeit, das jetzt zu testen) 🙁

    – Dunkle Seite

    29. November 2013 um 13:00 Uhr


  • Am Ergebnis hat es nichts geändert. Wieder fügt es das Array nach dem vorherigen hinzu

    – Kalipso

    29. November 2013 um 13:03 Uhr

  • Ah jetzt sehe ich. Sie müssen Elemente wie bei dieser Funktion rekursiv zusammenführen us3.php.net/manual/en/function.array-merge-recursive.php, aber der Haken hier ist, dass, wenn Sie numerische Schlüssel im Array haben, Unterelemente nicht zusammengeführt werden. Eine brutale Lösung wäre, zuerst alle JSONs zu decodieren, dann ihre Unterelemente nacheinander in einer Schleife zusammenzuführen und dann das Ergebnis in JSON zu codieren. Sorry, muss mich jetzt abmelden 🙁

    – Dunkle Seite

    29. November 2013 um 13:06 Uhr

  • Wie ich schon sagte – das sieht wie eine richtige Lösung aus: stackoverflow.com/a/20286594/1466341

    – Dunkle Seite

    29. November 2013 um 13:08 Uhr

Habe es geschafft, das zusammenzuwerfen. Es gibt höchstwahrscheinlich eine bessere Lösung, aber das ist die nächste, die ich bekommen habe.

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

kehrt zurück,

[{"COLUMN_NAME":"ORDER_NO","DEFAULT_VALUE":"1521","COLUMN_TITLE":"Order Number"},
{"COLUMN_NAME":"CUSTOMER_NO","DEFAULT_VALUEE":"C1435","COLUMN_TITLE":"Customer Number"}]

Das funktioniert wie ein Zauber für mich

json_encode(array_merge(json_decode($a, true),json_decode($b, true)))

Hier ist ein vollständiges Beispiel

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

  • Irgendetwas muss mir fehlen. Wird die 2. Codierung nicht über die erste schreiben?

    – Gary Carlyle Cook

    3. März 2018 um 2:25 Uhr

  • @GaryCarlyleCook, weil nach jeder While-Schleife das Ergebnis von $rows in einer anderen Variablen gespeichert wird ($json_personal_information und $json_doctor_information). Diese beiden Variablen werden in array_merge verwendet.

    – Lewis Donovan

    4. Oktober 2018 um 11:38 Uhr

Zusammenfuhren von zwei json in PHP
Welisson Carlos Dias

Das hat bei mir funktioniert!

$dados1 = json_encode(array('data'=>'1')); 
$dados2 = json_encode(array('data2'=>'2')); 
echo json_encode(array_merge(json_decode($dados1, true),json_decode($dados2, true)));

915650cookie-checkZusammenführen von zwei json in PHP

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy