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

php json编码-数组键不作为字符串输出,php,javascript,arrays,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_编码的形式输出这个数组,数组键作为对象名(?)。 当我ech

我有一个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_编码的形式输出这个数组,数组键作为对象名(?)。 当我
echo json\u 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
        ]
    ]
}
问题是数组键(“名称”和“数据”)是作为字符串输出的。我需要它们成为物体。也就是说,他们周围没有引号

编辑: 其目的是构建和使用带有highcharts的php数组。从数据源中可以看出,数据是以这种方式传递的:

$(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   ]
                ]
            }]
        });
    });
$(函数(){
$(“#容器”)。高图({
图表:{
类型:“样条线”
},
标题:{
文字:“挪威维克亚夫耶莱特山的积雪深度”
},
副标题:{
text:“Highcharts JS中不规则时间数据的示例”
},
xAxis:{
键入:“日期时间”,
dateTimeLabelFormats:{//不显示虚拟年份
月份:'%e.%b',
年份:'%b'
}
},
亚克斯:{
标题:{
文字:“雪深(m)”
},
最低:0
},
工具提示:{
格式化程序:函数(){
返回“+this.series.name+”
+ Highcharts.dateFormat(“%e.%b”,this.x)+':“+this.y+'m”; } }, 系列:[{ 名称:“2007-2008年冬季”, //定义数据点。所有系列都有一个虚拟年份 //为了在同一x轴上进行比较,请注意 //在JavaScript中,月份从0开始表示一月,从1开始表示二月,以此类推。 数据:[ [UTC日期(1970年9月27日),0], [UTC日期(1970年10月10日),0.6], [UTC日期(1970年10月18日),0.7], [UTC日期(1970年11月2日),0.8], [UTC日期(1970年11月9日),0.6], [UTC日期(1970年11月16日),0.6], [UTC日期(1970年11月28日),0.67], [UTC日期(1971,0,1),0.81], [UTC日期(1971,0,8,0.78)], [UTC日期(1971,0,12),0.98], [UTC日期(1971,0,27),1.84], [UTC日期(1971年1月10日),1.80], [UTC日期(1971年1月18日),1.80], [UTC日期(1971年1月24日),1.92], [UTC日期(1971年2月4日),2.49], [UTC日期(1971年2月11日),2.79], [UTC日期(1971年2月15日),2.73], [UTC日期(1971年2月25日),2.61], [UTC日期(1971年3月2日),2.76], [UTC日期(1971年3月6日),2.82], [UTC日期(1971年3月13日),2.8], [UTC日期(1971年4月3日),2.1], [UTC日期(1971年4月26日),1.1], [UTC日期(1971年5月9日),0.25], [UTC日期(1971年5月12日),0] ] }, { 名称:“2008-2009年冬季”, 数据:[ [UTC日期(1970年9月18日),0], [UTC日期(1970年9月26日),0.2], [UTC日期(1970年11月1日),0.47], [UTC日期(1970年11月11日),0.55], [UTC日期(1970年11月25日),1.38], [UTC日期(1971,0,8),1.38], [UTC日期(1971,0,15),1.38], [UTC日期(1971年1月1日),1.38], [UTC日期(1971年1月8日),1.48], [UTC日期(1971年1月21日),1.5], [UTC日期(1971年2月12日),1.89], [UTC日期(1971年2月25日),2.0], [UTC日期(1971年3月4日),1.94], [UTC日期(1971年3月9日),1.91], [UTC日期(1971年3月13日),1.75], [UTC日期(1971年3月19日),1.6], [UTC日期(1971年4月25日),0.6], [UTC日期(1971年4月31日),0.35], [UTC日期(1971年5月7日),0] ] }, { 名称:“2009-2010年冬季”, 数据:[ [UTC日期(1970年9月9日),0], [UTC日期(1970年9月14日),0.15], [UTC日期(1970年10月28日),0.35], [UTC日期(1970年11月12日),0.46], [UTC日期(1971,0,1),0.59], [UTC日期(1971,0,24),0.58], [UTC日期(1971年1月1日),0.62], [UTC日期(1971年1月7日),0.65], [UTC日期(1971年1月23日),0.77], [UTC日期(1971年2月8日),0.77], [UTC日期(1971年2月14日),0.79], [UTC日期(1971年2月24日),0.86], [UTC日期(1971年3月4日),0.8], [UTC日期(1971年3月18日),0.94], [UTC日期(1971年3月24日),0.9], [UTC日期(1971年4月16日),0.39], [UTC日期(1971年4月21日),0] ] }] }); });

这是json还是形成javascript对象的另一种方式?

使用
stdClass

$obj = new stdClass();

$obj->name = "Series Name";
$obj->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),
    );

echo json_encode($obj);
若你们不知道什么是stdClass,请看主题


编辑:为了让JSON生成有效的代码,除了数字键/值对之外,所有键/值对都必须在引号内

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

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

obj = $.parseJSON(json);

然后它将创建无效的
JSON
。那么,这些键是什么呢