Javascript PHP将嵌套数组编码为对象
我正试图从PHP中获取一份年度和月份列表,并将其发送到我的网站页面。该网站使用JavaScript,所以我需要这些数据是JSON 生成我需要的信息没有问题,但是我在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
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的评论,他回答了这个问题。