php json编码-数组键不作为字符串输出
我有一个php数组,如下所示: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
$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
。那么,这些键是什么呢