php - Google 绘制来自 php 数组的连续 x 轴图表

标签 php mysql arrays json google-visualization

我使用一些代码,可以很好地根据 mysql 表中的数据生成带有离散 x 轴的 google 折线图。但是当我将列类型更改为“日期”以使 x 轴连续时,我不断收到错误:

a.getTime is not a function

这里是从 mysql 生成数组的代码。

    <?php
include("connect.php");
$qry = " mysql query here";
$result = mysqli_query($con,$qry);
mysqli_close($con);

$table = array();
$table['cols'] = array(

array('id' => '', 'label' => 'Date', 'type' => 'date'),
array('id' => '', 'label' => 'Amount ', 'type' => 'number'),
); 
$rows = array();
foreach($result as $row){
$temp = array();

$date1 = date_create_from_format('Y-m-d H:i:s', $row['Date']);
$date2 = date_format($date1, 'd-m-Y');
$temp[] = array('v' => (string) $date2);
$temp[] = array('v' => (float) $row['Amount']);
$rows[] = array('c' => $temp);
}

$result->free();
$table['rows'] = $rows;
$jsonTable = json_encode($table, true);
echo $jsonTable;
?>

我尝试了各种方法,例如日期格式等,但如果 cloumn 1 类型是“日期”,仍然会出现相同的错误。任何帮助将不胜感激。

编辑: 仍然遇到这个问题。我无法理解它。以下是我目前得到的数组输出。希望这有助于指出我出错的地方。

编辑 2: 我现在的数组如下所示,但仍然有相同的 a.getTime 错误。

{"cols":[
{"label":"Reading Date","type":"date"},
{"label":"Cl Reading(mg\/l) ","type":"number"},
"rows":[
{"c":[{"v":"new Date(04\/10\/2015)"},{"v":0.4}]},
{"c":[{"v":"new Date(04\/11\/2015)"},{"v":0.45}]},
{"c":[{"v":"new Date(04\/12\/2015)"},{"v":0.9}]},
{"c":[{"v":"new Date(04\/01\/2016)"},{"v":0.5}]},
{"c":[{"v":"new Date(04\/02\/2016)"},{"v":0.43}]},
{"c":[{"v":"new Date(18\/02\/2016)"},{"v":0.6}]}]}

最佳答案

抛出错误是因为第一列中的值需要是实际的日期值。

尝试更换...

{"c":[{"v":"04-10-2015"},{"v":0.4}]}

与...

{"c":[{"v":new Date("10/04/2015")},{"v":0.4}]}

使用...

$date1 = date_create_from_format('Y-m-d H:i:s', $row['Date']);
$date2 = "new Date(\"".date("m",$date1)."/".date("d",$date1)."/".date("Y",$date1)."\")";
$temp[] = array('v' => (string) $date2);

google.charts.load('current', {
  packages: ['corechart'],
  callback: drawChart
});

function drawChart() {
  var json = {
    "cols":[
      {"label":"Reading Date","type":"date"},
      {"label":"Cl Reading(mg\/l) ","type":"number"}
    ],
    "rows":[
      {"c":[{"v":new Date("10/04/2015")},{"v":0.4}]},
      {"c":[{"v":new Date("11/04/2015")},{"v":0.45}]},
      {"c":[{"v":new Date("12/04/2015")},{"v":0.9}]},
      {"c":[{"v":new Date("01/04/2016")},{"v":0.5}]},
      {"c":[{"v":new Date("02/04/2016")},{"v":0.43}]},
      {"c":[{"v":new Date("02/18/2016")},{"v":0.6}]}
    ]
  }

  var data = new google.visualization.DataTable(json);

  var chart = new google.visualization.LineChart(document.getElementById('chart_div'));
  chart.draw(data, {});
}
<script src="https://www.gstatic.com/charts/loader.js"></script>
<div id="chart_div"></div>

关于php - Google 绘制来自 php 数组的连续 x 轴图表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35140257/

相关文章:

PHP Longtext 像用户写的那样显示

php - 如何使用 mailchimp API v1.3 php 创建列表

php - CSS3 下拉菜单在包含时在 IE 中不起作用

php - PDO mysql查询问题

mysql - 如何在文本框中显示来自 MySQL 的数据

mysql - 如何组合查询?

mysql - 有什么办法可以知道查询发送者的IP吗?

检查一个数字在数组中出现了多少次

javascript - 迭代使用对象键嵌套的数组

java - 我将如何缩放像素阵列?