php json 编码 - 数组键不输出为字符串

标签 php javascript arrays json

所以我有一个像这样的 php 数组:

$myArray = array(
'name' => 'Series Name',
'data' => array(
    array("2012-11-13",0.71),
    array("2012-11-14",0.45),
    array("2012-11-15",0.65),
    array("2012-11-16",0.67),
    )
);

我想以 json_encoded 形式输出此数组,并将数组键作为对象名称(?)。 当我 echo json_encode 数组时,我得到:

{
    "name": "Series Name",
    "data": [
        [
            "2012-11-13",
            0.71
        ],
        [
            "2012-11-14",
            0.45
        ],
        [
            "2012-11-15",
            0.65
        ],
        [
            "2012-11-16",
            0.67
        ]
    ]
}

这样做的问题是数组键(“name”和“data”)作为字符串输出。我需要它们成为对象。 IE。没有引号。

编辑: 目的是构建并使用带有 highcharts 的 php 数组。从this chart的来源可以看出数据以这种方式传递:

$(function () {
        $('#container').highcharts({
            chart: {
                type: 'spline'
            },
            title: {
                text: 'Snow depth in the Vikjafjellet mountain, Norway'
            },
            subtitle: {
                text: 'An example of irregular time data in Highcharts JS'
            },
            xAxis: {
                type: 'datetime',
                dateTimeLabelFormats: { // don't display the dummy year
                    month: '%e. %b',
                    year: '%b'
                }
            },
            yAxis: {
                title: {
                    text: 'Snow depth (m)'
                },
                min: 0
            },
            tooltip: {
                formatter: function() {
                        return '<b>'+ this.series.name +'</b><br/>'+
                        Highcharts.dateFormat('%e. %b', this.x) +': '+ this.y +' m';
                }
            },

            series: [{
                name: 'Winter 2007-2008',
                // Define the data points. All series have a dummy year
                // of 1970/71 in order to be compared on the same x axis. Note
                // that in JavaScript, months start at 0 for January, 1 for February etc.
                data: [
                    [Date.UTC(1970,  9, 27), 0   ],
                    [Date.UTC(1970, 10, 10), 0.6 ],
                    [Date.UTC(1970, 10, 18), 0.7 ],
                    [Date.UTC(1970, 11,  2), 0.8 ],
                    [Date.UTC(1970, 11,  9), 0.6 ],
                    [Date.UTC(1970, 11, 16), 0.6 ],
                    [Date.UTC(1970, 11, 28), 0.67],
                    [Date.UTC(1971,  0,  1), 0.81],
                    [Date.UTC(1971,  0,  8), 0.78],
                    [Date.UTC(1971,  0, 12), 0.98],
                    [Date.UTC(1971,  0, 27), 1.84],
                    [Date.UTC(1971,  1, 10), 1.80],
                    [Date.UTC(1971,  1, 18), 1.80],
                    [Date.UTC(1971,  1, 24), 1.92],
                    [Date.UTC(1971,  2,  4), 2.49],
                    [Date.UTC(1971,  2, 11), 2.79],
                    [Date.UTC(1971,  2, 15), 2.73],
                    [Date.UTC(1971,  2, 25), 2.61],
                    [Date.UTC(1971,  3,  2), 2.76],
                    [Date.UTC(1971,  3,  6), 2.82],
                    [Date.UTC(1971,  3, 13), 2.8 ],
                    [Date.UTC(1971,  4,  3), 2.1 ],
                    [Date.UTC(1971,  4, 26), 1.1 ],
                    [Date.UTC(1971,  5,  9), 0.25],
                    [Date.UTC(1971,  5, 12), 0   ]
                ]
            }, {
                name: 'Winter 2008-2009',
                data: [
                    [Date.UTC(1970,  9, 18), 0   ],
                    [Date.UTC(1970,  9, 26), 0.2 ],
                    [Date.UTC(1970, 11,  1), 0.47],
                    [Date.UTC(1970, 11, 11), 0.55],
                    [Date.UTC(1970, 11, 25), 1.38],
                    [Date.UTC(1971,  0,  8), 1.38],
                    [Date.UTC(1971,  0, 15), 1.38],
                    [Date.UTC(1971,  1,  1), 1.38],
                    [Date.UTC(1971,  1,  8), 1.48],
                    [Date.UTC(1971,  1, 21), 1.5 ],
                    [Date.UTC(1971,  2, 12), 1.89],
                    [Date.UTC(1971,  2, 25), 2.0 ],
                    [Date.UTC(1971,  3,  4), 1.94],
                    [Date.UTC(1971,  3,  9), 1.91],
                    [Date.UTC(1971,  3, 13), 1.75],
                    [Date.UTC(1971,  3, 19), 1.6 ],
                    [Date.UTC(1971,  4, 25), 0.6 ],
                    [Date.UTC(1971,  4, 31), 0.35],
                    [Date.UTC(1971,  5,  7), 0   ]
                ]
            }, {
                name: 'Winter 2009-2010',
                data: [
                    [Date.UTC(1970,  9,  9), 0   ],
                    [Date.UTC(1970,  9, 14), 0.15],
                    [Date.UTC(1970, 10, 28), 0.35],
                    [Date.UTC(1970, 11, 12), 0.46],
                    [Date.UTC(1971,  0,  1), 0.59],
                    [Date.UTC(1971,  0, 24), 0.58],
                    [Date.UTC(1971,  1,  1), 0.62],
                    [Date.UTC(1971,  1,  7), 0.65],
                    [Date.UTC(1971,  1, 23), 0.77],
                    [Date.UTC(1971,  2,  8), 0.77],
                    [Date.UTC(1971,  2, 14), 0.79],
                    [Date.UTC(1971,  2, 24), 0.86],
                    [Date.UTC(1971,  3,  4), 0.8 ],
                    [Date.UTC(1971,  3, 18), 0.94],
                    [Date.UTC(1971,  3, 24), 0.9 ],
                    [Date.UTC(1971,  4, 16), 0.39],
                    [Date.UTC(1971,  4, 21), 0   ]
                ]
            }]
        });
    });

这是 json 还是其他形成 javascript 对象的方式?

最佳答案

假设您想在客户端使用 JSON 对象,对于支持 JSON.parse(); 的浏览器; 您可以使用 JavaScript 解析 JSON 字符串:

obj = JSON.parse(json);

哪个 json 是从服务器传递的 JSON 字符串(PHP 文件中 json_encode($array); 的结果),但是为了浏览器兼容性,您可以使用 jQuery :

obj = $.parseJSON(json);

关于php json 编码 - 数组键不输出为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16438889/

相关文章:

php - 与当前日期比较时,通过多个元键查询帖子不起作用

php - php-ajax 表单提交后不显示 Bootstrap 警报

arrays - 如何使 Dart 中的数组(列表)元素唯一?

php array_search 具有多个命中的单个数组

php - 字符串的键和索引 - 内爆

php - PHP 中的 MySQL 更新查询并返回多个 id

javascript - Unresolved PHP页面刷新不使用Ajax

javascript - 为什么子组件没有渲染?

javascript - 尝试将变量分配给 JS 对象

javascript - 返回 JS 中的今天日期