2013-06-26 12 views
11

Ich kann einfache JSON-Objekte wie folgt erstellen:build json Array in PHP dynamisch

$d = array('item' => "$name" ,'rate' => "$rating"); 

Aber was ist, wenn ich ein Array von Elementen aufbauen will und tut es dynamisch, da ich es von einer beliebigen DB-Abfrage am Bau?

Update:

Lassen Sie mich genauer sein ich weiß, ich habe zu tun:

$jsonCode = json_encode($d); 

, die ein JSON-Objekt mit einem Element und Ratenfeld schaffen. Aber ich möchte mehrere JSON-Objekte in einem JSON-Array, wenn ich es kodiere.

Was will ich JSon weise ist so etwas wie dieses:

[{"item":"toy","rating":"baz" },{"item":"bike","rating":"2.3" }, {"item":"juice","rating":"1.3" }] 
+10

Das ist nicht JSON. Das ist ein PHP-Array. – Paulpro

+10

Das ist nicht JSON, es ist nur ein PHP-Array. – Barmar

+10

Das ist nicht JSON, es ist nur ein PHP-Array. :) –

Antwort

24

Aber ich mehrere json Objekte in einem json Array wollen, wenn ich es kodieren.

Dann einen Array von Arrays und übergeben es an json_encode erstellen. Die documentation about arrays erläutert, wie Elemente zu einem Array im Abschnitt Erstellen/Ändern mit eckigen Klammer Syntax hinzugefügt werden.

Assoziative Arrays, wie die, die Sie bereits haben, werden als Objekte kodiert, "normale" Arrays (Arrays mit aufeinanderfolgenden numerischen Schlüsseln) werden als Arrays kodiert.

Beispiel:

$d = array(); 

// This appends a new element to $d, in this case the value is another array 
$d[] = array('item' => "$name" ,'rate' => "$rating"); 

$json = json_encode($d); 
+0

eine seltene Oase, wo PHP ist eigentlich idiomatisch und einfach, anstatt zwingend und eigenwillig. – ahnbizcad

0

Warum Ihr Array nicht erstellen, wie Sie gerade getan haben, aber dann das Array durch json_encode passieren?

Wenn Sie ein mehrdimensionales Array, versuchen

$array[] = array("key1" => value1, "key2" => value2); 
+0

Lesen zwischen den Zeilen, sein wirkliches Problem ist, er weiß nicht, wie man mehrdimensionale Arrays erstellt. – Barmar

+0

Bitte lesen, wenn er aktualisiert, er hat nicht gesagt, dass er nicht wusste, wie das zu tun ist oder was er genau wollte, als ich den Kommentar posten –

+0

Schon am Anfang schien es offensichtlich, er wusste nicht, wie man ein erstellt Array dynamisch. Er schrieb _was wenn ich ein Array von Items erstellen und es dynamisch machen möchte. – Barmar

1

Was können Sie tun, ist dynamisch ein PHP-Array erstellen, wie Sie es dann in ein JSON-Array wie unten verdeckte wollen.

$json_array = json_encode($array); 

Denken Sie daran, dass das, was Sie zur Verfügung gestellt haben, ist kein json Array

+0

Ich habe gerade meine ursprünglichen Fragen aktualisiert, wie ich nicht spezifisch genug war – Mike

8

Dies wird ein mehrdimensionales Array aus Ihrer Datenbank-Abfrage erstellen, und dann als JSON kodieren.

$d = array(); 
while ($row = $stmt->fetch_assoc()) { 
    $d[] = $row; 
} 
$json = json_encode($d); 

Jeder $row wird eine assoziative Array der Daten von der Datenbank zurückgegeben werden. Wenn Sie es $d[] zuweisen, wird es als indiziertes Element dieses Container-Arrays hinzugefügt.

+0

Danke! Das funktioniert perfekt. – Harsha