PHP将嵌套数组编码为对象

时间:2016-11-10 15:12:43

标签: javascript php json

我试图从PHP到我的网站页面获取年份和月份列表。该网站使用JavaScript,因此我需要这些数据为JSON。

生成我需要的信息没有问题,但我在PHP上使用product_image,所有嵌套的数组都变成了对象,因此,我无法在的JavaScript。

这就是我在PHP上生成数组所做的:

json_encode

如果我只是使用$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... } } 打印$list,则结果为:

return print_r($list);

但是当我使用

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

所有嵌套数组都变成了对象。例如,Month数组,变成一个对象,这是结果return print_r(json_encode($list)); //or return print_r(json_encode($list, true)); 的打印屏幕:

enter image description here

有没有办法解决这个问题?或者我做错了?

1 个答案:

答案 0 :(得分:0)

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

$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对象来完成你想要完成的任务。