2013-06-26 11 views
11

posso creare semplici oggetti JSON come questo:accumulo di matrice JSON in PHP in modo dinamico

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

Ma cosa succede se voglio costruire una matrice di elementi e farlo in modo dinamico dal momento che sto costruendo da una query db?

Aggiornamento:

mi permetta di essere più speciali Io so quello che devo fare:

$jsonCode = json_encode($d); 

che creerà un oggetto JSON con un campo oggetto e la velocità. Ma voglio più oggetti JSON in un array JSON quando lo codifico.

Quello che voglio JSON saggio è qualcosa di simile:

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

Questo non è JSON. Questo è un array PHP. – Paulpro

+10

Questo non è JSON, è solo un array PHP. – Barmar

+10

Questo non è JSON, è solo un array PHP. :) –

risposta

24

Ma io voglio più oggetti JSON in un array JSON quando ho codificare.

quindi creare array di array e passarlo al json_encode. Il documentation about arrays spiega come aggiungere elementi a un array, nella sezione Creazione/modifica con la sintassi con parentesi quadra.

Gli array associativi, come quello già esistente, saranno codificati come oggetti, gli array "normali" (array con tasti numerici consecutivi) verranno codificati come array.

Esempio:

$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

un'oasi rara in cui php è effettivamente idiomatico e facile, piuttosto che imperativo e idiosincratico. – ahnbizcad

0

Perché non creare l'array, come hai appena fatto, ma poi passare la matrice attraverso json_encode?

Se si desidera un array multi-dimensionale, provare

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

Leggendo tra le righe, il suo vero problema è che non sa come creare array multidimensionali. – Barmar

+0

Si prega di leggere quando ha aggiornato, non ha messo che non sapeva come farlo o cosa voleva esattamente quando ho postato il commento –

+0

Anche all'inizio, sembrava ovvio che non sapeva come creare un array in modo dinamico. Ha scritto _what se voglio creare una serie di elementi e farlo dinamicamente_. – Barmar

1

Che cosa si può fare è creare un array PHP in modo dinamico come si desidera quindi convertirlo in un array JSON, come di seguito.

$json_array = json_encode($array); 

Tenete a mente che ciò che avete fornito non è un array JSON

+0

Ho appena aggiornato le mie domande originali perché non ero abbastanza specifico – Mike

8

Questo creerà un array multi-dimensionale dalla query di database, e quindi codificare come JSON.

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

Ogni $row sarà un array associativo dei dati restituiti dal database. Assegnandolo a $d[] lo aggiunge come elemento indicizzato di tale array contenitore.

+0

Grazie! Questo funziona perfettamente. – Harsha

Problemi correlati