一尘不染

将mysql结果集转换为(名称,数据)对象以馈入HighCharts

json

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

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

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

seriesHighCharts 的属性需要以下格式的数据才能绘制图形

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

所以我想到了使用将结果集覆盖到JSON对象中json_encode($row)。但是我得到以下输出:

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

疑问:

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

series: <? echo $jsonNameData ?>

编辑:

通过执行以下操作,我能够解决第一季度的问题:

$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

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


阅读 209

收藏
2020-07-27

共1个答案

一尘不染

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

$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控制台中遇到了Highchart错误#14?看看这个问题Highcharts返回错误14

附言:请不要将多个问题混为一谈,请分别发布,也要更有效地使用JavaScript控制台和SO搜索等工具

2020-07-27