PHP数组到JSON使用Google Chart Tools绘制柱形图

时间:2013-02-07 22:58:57

标签: php json api

我已经在这里和其他网站上阅读了多个问题/答案,但我无法让它发挥作用。

我有一个包含日期和计数的数据库。使用PHP,我构建了一个嵌套数组,当编码成为有效的json时。至少根据http://jsonlint.com/。 json(我可以看到)看起来像https://google-developers.appspot.com/chart/interactive/docs/php_example上的那些。

我唯一想做的就是使用Google API创建一个柱形图(不应该这么难)...我想要y轴上的Count(数量)和x轴上的日期

这是一个json输出示例(相信我,我已尝试了几个):

  

{ “COLS”:[{ “ID”: “”, “标签”: “日期”, “类型”: “日期”},{ “ID”: “”, “标签”: “计数”, “类型”: “号码”}], “行”:[{ “C”:[{ “v”: “2013年2月8日”},{ “v”: “13”}]},{“C “:[{” v “:” 2013年2月9日 “},{” v “:” 80 “}]},{” C “:[{” v “:” 2013年2月10" 日},{ “v”: “2021”}]},{ “C”:[{ “v”: “2013年2月11日”},{ “v”: “18”}]},{ “C”:[{ “v”: “2013年2月12日”},{ “v”: “8”}]},{ “C”:[{ “v”: “2013年2月13日”},{ “v”: “4”}]},{ “C”:[{ “v”: “2013年2月14日”},{ “v”: “687”}]},{ “C”:[{ “v”: “2013年2月15日”},{ “v”: “6674”}]},{ “C”:[{ “v”: “2013年2月16日”},{ “v”: “656”} ]},{ “C”:[{ “v”: “2013年2月17日”},{ “v”: “646”}]},{ “C”:[{ “v”:“2013-02 -18 “},{” v “:” 672 “}]},{” C “:[{” v “:” 2013年2月19日 “},{” v “:” 656" }]},{ “C”:[{ “v”: “2013年2月20日”},{ “v”: “653”}]},{ “C”:[{ “v”: “2013年2月21日”} ,{ “v”: “697”}]},{ “C”:[{ “v”: “2013年2月22日”},{ “v”: “696”}]},{ “C”: [{ “v”: “2013年2月23日”},{ “v”: “679”}]},{ “C”:[{ “v”: “2013年2月24日”},{“v “:” 647 “}]},{” C “:[{” v “:” 2013年2月25日 “},{” v “:” 638 “}]},{” C “:[{” v “:” 2013年2月26日 “},{” v “:” 636 “}]},{” C “:[{” v “:” 2013年2月27日 “},{” v “:” 629 “}]},{” C “:[{” v “:” 2013年2月28日 “},{” v “:” 644 “}]},{” C “:[{” v “:” 2013 -03-01 “},{” v “:” 5648 “}]},{” C “:[{” v “:” 2013年3月2日 “},{” v “:” 4378" }]} ,{“C” :[{ “V”: “2013年3月3日”},{ “V”: “664”}]},{ “C”:[{ “V”: “2013年3月4日”},{” v “:” 663 “}]},{” C “:[{” v “:” 2013年3月5日 “},{” v “:” 630 “}]},{” C “:[{” v “:” 2013年3月6日 “},{” v “:” 640 “}]},{” C “:[{” v “:” 2013年3月7日 “},{” v “:” 16 “}]},{” C “:[{” v “:” 2013年3月8日 “},{” v “:” 25 “}]},{” C “:[{” v “:” 2013年3月9日 “},{” v “:” 31 “}]},{” C “:[{” v “:” 2013年3月10日 “},{” v “:” 324" }] },{ “C”:[{ “v”: “2013年3月11日”},{ “v”: “9”}]},{ “C”:[{ “v”:“2013-03- 12 “},{” v “:” 22 “}]},{” C “:[{” v “:” 2013年3月13日 “},{” v “:” 23 “}]},{” C “:[{” v “:” 2013年3月14日 “},{” v “:” 31 “}]},{” C “:[{” v “:” 2013年3月15" 日}, { “v”: “29”}]},{ “C”:[{ “v”: “2013年3月16日”},{ “v”: “40”}]},{ “C”:[ { “v”: “2013年3月17日”},{ “v”: “15”}]},{ “C”:[{ “v”: “2013年3月18日”},{ “v” : “5”}]},{ “C”:[{ “v”: “2013年3月19日”},{ “v”: “13”}]},{ “C”:[{ “v” : “2013年3月20日”},{ “v”: “24”}]},{ “C”:[{ “v”: “2013年3月21日”},{ “v”: “53” }]},{ “C”:[{ “v”: “2013年3月22日”},{ “v”: “808”}]},{ “C”:[{ “v”:“2013- 03-23 “},{” v “:” 59 “}]},{” C “:[{” v “:” 2013年3月24日 “},{” v “:” 24" }]}, { “C”:[{ “v”: “2013年3月25日”},{ “v”: “2”}]},{ “C”:[{ “v”: “2013年3月26日” },{ “v”: “16”}]},{ “C”:[{ “v”: “2013年3月27日”},{ “v”: “1546”}]},{ “c” 的:[{ “v”: “2013年3月28日”},{ “v”: “1554”}]},{ “C”:[{“v “:” 2013年3月29日 “},{” V “:” 1587 “}]},{” C “:[{” V “:” 2013年3月30日 “},{” V “:” 1570 “}]},{” C “:[{” v “:” 2013年3月31日 “},{” v “:” 1552 “}]},{” C “:[{” v “:” 2013 -04-01 “},{” v “:” 1559 “}]},{” C “:[{” v “:” 2013年4月2日 “},{” v “:” 1568" }]} ,{ “C”:[{ “v”: “2013年4月3日”},{ “v”: “1566”}]},{ “C”:[{ “v”:“2013年4月4日“},{” v “:” 1574 “}]},{” C “:[{” v “:” 2013年4月5日 “},{” v “:” 1558 “}]},{” C “:[{” v “:” 2013年4月6日 “},{” v “:” 1626 “}]},{” C “:[{” v “:” 2013年4月7" 日},{ “v”: “1562”}]},{ “C”:[{ “v”: “2013年4月8日”},{ “v”: “1536”}]},{ “C”:[{ “v”: “2013年4月9日”},{ “v”: “1565”}]},{ “C”:[{ “v”: “2013年4月10日”},{ “v”: “1551”}]},{ “C”:[{ “v”: “2013-04-11”},{ “v”: “1547”}]},{ “C”:[{ “v”: “2013年4月12日”},{ “v”: “1628”}]},{ “C”:[{ “v”: “2013年4月13日”},{ “v”: “1541”} ]},{ “C”:[{ “v”: “2013年4月14日”},{ “v”: “1515”}]},{ “C”:[{ “v”:“2013-04 -15 “},{” v “:” 1537 “}]},{” C “:[{” v “:” 2013年4月16日 “},{” v “:” 1536" }]}]}

和API脚本

// Load the Visualization API and the piechart package.
google.load('visualization', '1', {'packages':['corechart']});

// Set a callback to run when the Google Visualization API is loaded.
google.setOnLoadCallback(drawChart);

function drawChart() {
  var jsonData = $.ajax({
      url: "chartjson.php",
      dataType:"json",
      async: false
      }).responseText;

  // Create our data table out of JSON data loaded from server.
  var data = new google.visualization.DataTable(jsonData);

  // Instantiate and draw our chart, passing in some options.
  var chart = new google.visualization.ColumnChart(document.getElementById('chart_div'));
  chart.draw(data, {width: 400, height: 240});
}

我正在认真考虑在Excel中制作图表并每天上传截图。

关于如何解决这个问题的任何想法?我甚至关闭(不要吝啬)?

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:2)

感觉有点愚蠢...经过一些挖掘后我发现我必须使用'字符串'作为日期而不是日期,然后解决整个问题。