Lan*_*tus 3 javascript php highcharts
我正在尝试将php数组项转换为Highcharts X轴的标签.默认示例是:
categories: ['Jan','Feb','Mar','Apr', 'May', 'Jun',
'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
Run Code Online (Sandbox Code Playgroud)
所以我有一个PHP数组($ items)并最终得到一个Javascript数组(var items).Firebug输出以下内容:
console.log(items);
["item1_10_20", "item2_2011_10_14", "item3_2011_10_07", "item3_2011_09_12"]
Run Code Online (Sandbox Code Playgroud)
我可以看到我应该有单引号.我怎样才能做到这一点?或者也许我应该用逗号和单引号分隔字符串来代替Highcharts?我该怎么办?
编辑
我试过这个,但没有运气!
在我的视图文件中,我有一个javascript脚本:
var items = "'<? echo join("','", $items) ?>'"; // Note the enclosing single quotes
Run Code Online (Sandbox Code Playgroud)
在Highcharts JS文件中:
xAxis: {
categories: [items]
},
Run Code Online (Sandbox Code Playgroud)
整个数组放在x轴的第一个值中,其余值都是空白的.item变量显示在firebug中:
'item1_2011_10_20','item2_2011_10_14','item3_2011_10_07','item4_2x1_2011_09_12'
Run Code Online (Sandbox Code Playgroud)
这有点奇怪吗?
编辑
当使用json_encode格式化php数组时,我仍然无法获得高图来识别数组.如果我用单引号手动复制和硬编码数组,它可以工作.但我真的需要通过变量将数组从php传递给highcharts的js.
这是通过json_encode生成的带有数组的x轴:

以下已经是一个数组 -
["item1_10_20", "item2_2011_10_14", "item3_2011_10_07", "item3_2011_09_12"]
Run Code Online (Sandbox Code Playgroud)
所以,改变以下
xAxis: {
categories: [items]
},
Run Code Online (Sandbox Code Playgroud)
如下 -
xAxis: {
categories: items
},
Run Code Online (Sandbox Code Playgroud)
更新:
xAxis: {
categories: eval('(' + items + ')')
},
Run Code Online (Sandbox Code Playgroud)
UPDATE2:
你需要知道的一件事是JSON不是Javascript.你从服务器获得JSON响应,这只不过是Javascript中的一个字符串.因此,要在Javascript中使用该JSON响应,您必须解析JSON以形成类似于对象,数组等的Javascript数据结构(就像我们使用XMl一样),这称为解析.
有很多JSON解析库,但我们也可以使用evalJS函数来完成工作,只要安全性不是问题.
在您的情况下,JSON响应表示一个数组,因此您eval可以将其转换为真正的Javascript数组.
所以,items是JSON和你使用eval(eval('(' + items + ')'))来解析它返回一个Javascript数组,然后你将结果分配给categories.