2012-04-30 12 views
7

Mam do czynienia z highcharts z danymi dynamicznymi (wartości pobrane z bazy danych). Pisząc zapytanie byłem w stanie odzyskać następujące dane z tabelijak używać json_encode

Item 2011 2012 
pen  5  7 
pencil 4  20 
eraser 6  43 

Chcę przechowywać powyższą informacje w następującej strukturze i przekazać je do innej strony

[{ name:'pen', data: [5,7]},{ name:'pencil', data: [4,20]},{ name:'eraser', data: [6,43]}]"; 

chcę popchnij powyższe dane do górnego wykresu drążenia.

Czy istnieje sposób, w jaki mogę wygenerować w tym formacie? Próbowałem używać json_encode, ale nie udało się. Czy mogę to osiągnąć, używając json_encode?

Updated Próbowałem w ten sposób

while($row = mysql_fetch_assoc($result)) 
    { 
    $rows[]= $row; 

    } 
echo json_encode($rows); 

i dostał

[{"Item":"pen","2011":"5","2012":"7"},{"Item":"pencil","2011":"4","2012":"20"},{"Item":"eraser","2011":"6","2012":"43"}] 
+2

'json_encode' koduje JSON, nie wyrażenia obiektu JavaScript (niecytowane klucze), które tam masz. Ale to nie ma znaczenia. – mario

+2

Wygląda na to, że lepszym rozwiązaniem byłoby serializowanie danych. – nickb

+1

@JohnConde Zaktualizowałem niektóre info.check na – Anil

Odpowiedz

17

json_encode to wygodna metoda przekształcania tablicy w format JSON. Aby uzyskać wyjście, które podałeś, będziesz potrzebował tablicy tablic. Każda tablica ma sub-klucze „nazwa” i „dane”, gdzie „nazwa” jest kolumna Przedmiot i „dane” to kolejna tablica zawierająca wartości z roku 2011 i 2012.

$results = mysql_query("..."); 
$arr = array(); 

while ($row = mysql_fetch_assoc($results)) 
{ 
    $name = $row['Item']; 
    $data = array($row['2011'], $row['2012']); 

    $arr[] = array('name' => $name, 'data' => $data); 
} 

echo json_encode($arr); 
3
  1. Loop poprzez wyników bazy danych i umieścić wyniki w tablicy
  2. JSON kodowania tablica
Powiązane problemy