将mysql结果集转换为要输入HighCharts的(名称,数据)对象

我正在使用HighCharts条形图将mysql结果集中的数据绘制成条形图。

现在我的查询的结果集如下:

Name Expense ----------------- July 700.0000 August 450.0000 September 1700.0000 

HighCharts的series属性需要以下格式的数据来绘制图形

 [ {name:"July",data:[700.0000]}, {name:"August",data:[450.0000]}, {name:"September",data:[1700.0000]} ] 

所以我想到使用json_encode($row)我的结果集转换为JSON对象。 但我得到以下输出:

 [{"name":"July","data":"700.0000"}, {"name":"August","data":"450.0000"}, {"name":"September","data":"1700.0000"}] 

释疑:

  1. 有没有办法以与HighCharts的系列属性所需的格式完全相同的格式获取/转换结果集?
  2. 我也可以使用在php块中创建的对象,直接进入javascript? 假设我从结果$jsonNameData创建了一个对象$jsonNameData 。 然后我可以在javascript中使用它

    series:

编辑:

通过执行以下操作,我能够解决Q1:

 $count = 0; $strSeries = "["; while($r = mysql_fetch_assoc($result)) { if($count == 0){ $strSeries .= "{name:'" . $r['name'] . "',"; $strSeries .= "data:[" . $r['data'] . ']}'; $count = 1; } else { $strSeries .= ",{name:'" . $r['name'] . "',"; $strSeries .= "data:[" . $r['data'] . ']}'; } $rows[] = $r; } $strSeries .= "]"; 

获得$strSeries的必需字符串。

现在问题是第二个问题。 我将$strSeries的值分配给javascript中的变量但是当我使用该变量时

 series: variableName 

即使变量具有适当的值(通过警报检查),也不会正确绘制图形。

没有机会运行下面的代码,但这应该工作或与此非常相似的东西

 $series=array(); while($item = mysql_fetch_assoc($result)) { $serie=array( "name" => $item['name'], "data" => array(floatval($item['data'])) ); array_push($series,$serie); } echo json_encode($series); 

建议是始终坚持使用json_encode()进行jsonification。 您可能希望在参考页面上查看此示例 ,以了解json_encode如何与数组一起使用

编辑:回答你的第二个问题。 您可能在javascript控制台中收到高清错误#14? 看看这个问题Highcharts返回错误14

PS请不要混合多个问题,单独发布,也可以使用javascript控制台和SO搜索等工具

我会试试这个:

 $jsonObj = '['; foreach($mysqlResul as $item){ $jsonObj .= '{"name":"'.$item['name'].'","data":['.$item['data'].']},'; } // strip off last comma $jsonObj = substr(0,strlen($jsonObj)-1,$jsonObj); $jsonObj .= ']'; 
 select concat('{name:"', name, '",data:[', expense, ']}') as foo from bar