Javascript PHP将嵌套数组编码为对象

Javascript PHP将嵌套数组编码为对象,javascript,php,json,Javascript,Php,Json,我正试图从PHP中获取一份年度和月份列表,并将其发送到我的网站页面。该网站使用JavaScript,所以我需要这些数据是JSON 生成我需要的信息没有问题,但是我在PHP上使用了json\u encode,所有嵌套数组都变成了对象,因此,我无法在JavaScript上有正确的行为 下面是我在PHP上生成数组的步骤: $list = sql("SELECT DISTINCT YEAR(created) AS year FROM order"); foreach ($list as &$r

我正试图从PHP中获取一份年度和月份列表,并将其发送到我的网站页面。该网站使用JavaScript,所以我需要这些数据是JSON

生成我需要的信息没有问题,但是我在PHP上使用了
json\u 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(json_encode($list));
//or
return print_r(json_encode($list, true));
所有嵌套数组都变成对象。例如,月份数组,变成一个对象,这是
控制台的打印屏幕。结果的log

Array (
    [0] => Array (
        [year] => 2016
        [month] => Array (
            [1] => stdClass Object (
                [Month] => Jan
            )
            [2] => stdClass Object (
                [Month] => Feb
            )
            //Etc...


有办法解决这个问题吗?还是我做错了?

如果您只需要月份名称,请替换以下行:

$row['month'][$i] = new stdClass();
$row['month'][$i]->Month = date("M", strtotime(date("Y")."-".$i."-01"));
为此:

$row['month'][$i] = date("M", strtotime(date("Y")."-".$i."-01"));

您不需要STD对象来完成您要完成的任务。

好吧,您不能让数组从索引1开始。如果你想要一个数组,你的索引必须是0-11。@deceze就这么简单!太专注于另一部分,忘记了这个细节。。非常感谢。如果你能把它变成一个答案,那么我可以接受。谢谢我宁愿先创建month对象,然后像这样将其添加到数组中:
$row['month'][]=$monthObj@deceze您可以拥有一个从您想要的索引开始的数组。如果您不指定起始索引,它将为零,但他确实指定了它。@besciualex…在JSON中!我需要更多信息,但由于与问题无关,我省略了代码。@CelsomTrindade在此处提问,或重新编辑您的问题。你不明白的是什么?看看deceze的评论,他回答了这个问题。