我試圖從PHP到我的網站頁面獲取年月列表。該網站使用JavaScript,所以我需要這些數據爲JSON。將嵌套數組作爲對象的PHP編碼
生成我需要的信息沒有問題,但我在PHP上使用json_encode
,所有嵌套數組都變成對象,因此,我無法在JavaScript上執行正確的操作。
這是我在做什麼,以產生對PHP數組:
$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...
}
}
如果我只是打印使用return print_r($list);
這個$list
結果如下:
Array (
[0] => Array (
[year] => 2016
[month] => Array (
[1] => stdClass Object (
[Month] => Jan
)
[2] => stdClass Object (
[Month] => Feb
)
//Etc...
但是當我使用
return print_r(json_encode($list));
//or
return print_r(json_encode($list, true));
所有的嵌套數組變成對象。例如,月陣列,變成一個對象,這是結果的console.log
的打印屏幕:
是有辦法解決這一問題?還是我做錯了?
那麼,你不能有從索引1開始的數組。如果你想要一個數組,你的索引必須是0 - 11. – deceze
@deceze簡單!是如此專注於其他部分,忘了這個細節..謝謝。如果你能把它變成答案,那麼我可以接受。謝謝! – celsomtrindade
我寧願先創建月份對象,然後像下面這樣將它添加到數組中:'$ row ['month'] [] = $ monthObj;' – Jeff