2013-06-26 19 views
11

mogę tworzyć proste obiekty json tak:build tablicy json w PHP dynamicznie

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

Ale co, jeśli chcę zbudować tablicę elementów i zrobić to dynamicznie od buduję go z kwerendy db?

Aktualizacja:

Pozwól mi być bardziej szczegółowe wiem, że mam do zrobienia:

$jsonCode = json_encode($d); 

który stworzy obiekt JSON z pola pozycji i stopy. Ale chcę wielu obiektów json w tablicy json, kiedy ją koduję.

Co chcę JSON mądry jest coś takiego:

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

To nie jest JSON. To jest tablica PHP. – Paulpro

+10

To nie jest JSON, to tylko tablica PHP. – Barmar

+10

To nie jest JSON, to tylko tablica PHP. :) –

Odpowiedz

24

Ale chcę wiele obiektów json w tablicy json kiedy zakodować.

Następnie utworzyć tablicę tablic i przekazać je do json_encode. W dokumencie documentation about arrays wyjaśniono, jak dodawać elementy do tablicy, w sekcji Tworzenie/modyfikowanie za pomocą składni nawiasów kwadratowych.

Tablice asocjacyjne, takie jak te, które już masz, zostaną zakodowane jako obiekty, "normalne" tablice (tablice z kolejnymi kluczami numerycznymi) zostaną zakodowane jako tablice.

Przykład:

$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

rzadka oaza, w której php jest rzeczywiście idiomatyczny i łatwy, a nie imperatywny i idiosynkratyczny. – ahnbizcad

0

Dlaczego nie stworzyć tablicę jak po prostu zrobić, ale potem przekazać tablicę przez json_encode?

Jeśli chcesz wielowymiarową tablicę, spróbuj

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

Czytanie między wierszami, jego prawdziwym problemem jest to, że nie wie, jak tworzyć wielowymiarowe tablice. – Barmar

+0

Proszę przeczytać po aktualizacji, nie powiedział, że nie wie, jak to zrobić lub czego dokładnie chciał, kiedy opublikowałem komentarz –

+0

Nawet na początku wydawało się oczywiste, że nie wiedział, jak stworzyć tablica dynamicznie. Napisał, co jeśli chcę zbudować tablicę przedmiotów i zrobić to dynamicznie. – Barmar

1

Co można zrobić, to stworzyć dynamicznie tablicę php jak chcesz następnie przekształca go do tablicy json jak poniżej.

$json_array = json_encode($array); 

Należy pamiętać, że to, co podałeś nie jest tablicą json

+0

Właśnie zaktualizowałem moje oryginalne pytania, ponieważ nie byłam wystarczająco specyficzna – Mike

8

Pozwoli to stworzyć wielowymiarową tablicę z kwerendy bazy danych, a następnie zakodować go jako JSON.

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

Każdy $row będzie asocjacyjna danych zwracanych z bazy danych. Przypisanie go do $d[] dodaje go jako indeksowany element tej tablicy kontenerów.

+0

Dzięki! To działa idealnie. – Harsha