Ich versuche, eine Liste von Jahr und Monat von PHP zu meiner Website-Seite zu bekommen. Die Website arbeitet mit JavaScript, also brauche ich diese Daten als JSON.PHP-Kodierung verschachtelten Array als Objekt
Es gibt kein Problem, um die Informationen zu generieren, die ich brauche, aber ich verwende json_encode
auf der PHP, alle geschachtelten Arrays werden in Objekt und aus diesem Grund kann ich nicht das richtige Verhalten auf dem JavaScript haben.
Das ist, was ich tue das Array auf der PHP zu generieren:
Array (
[0] => Array (
[year] => 2016
[month] => Array (
[1] => stdClass Object (
[Month] => Jan
)
[2] => stdClass Object (
[Month] => Feb
)
//Etc...
Aber wenn ich benutze:
$list = sql("SELECT DISTINCT YEAR(created) AS year FROM order");
foreach ($list as &$row) {
$row['month'] = array();
for ($i=1; $i<=12; $i++) {
$row['month'][$i] = new stdClass();
$row['month'][$i]->Month = date("M", strtotime(date("Y")."-".$i."-01"));
//more information goes here...
}
}
Wenn ich das Ergebnis mit return print_r($list);
dieses ist $list
bedrucken Alle
return print_r(json_encode($list));
//or
return print_r(json_encode($list, true));
die verschachtelte Array in Objekt drehen. Zum Beispiel, das Monat Array in ein Objekt drehen, das ist ein Druckbild der console.log
des Ergebnisses:
Gibt es eine Möglichkeit, dies zu beheben? Oder mache ich falsch?
Nun, Sie können nicht Arrays ab Index 1 haben. Wenn Sie ein Array wollen, müssen Ihre Indizes 0 - 11 sein. – deceze
@deceze einfach so! War so auf den anderen Teil konzentriert, vergaß dieses Detail .. Danke. Wenn Sie es in eine Antwort verwandeln können, kann ich akzeptieren. Vielen Dank! – celsomtrindade
Ich würde lieber zuerst das month-Objekt erstellen und es dann dem Array hinzufügen: '$ row ['month'] [] = $ monthObj;' – Jeff