Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/254.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将Google可视化图表中所有缺失的数据点初始化为0_Javascript_Php_Google Visualization - Fatal编程技术网

Javascript 将Google可视化图表中所有缺失的数据点初始化为0

Javascript 将Google可视化图表中所有缺失的数据点初始化为0,javascript,php,google-visualization,Javascript,Php,Google Visualization,我试图从MySQL数据库中以小时为单位绘制某个给定ID的记录数 我遇到的问题是,如果给定的ID在给定的时间内有0条记录,我就不会为表生成数据点。这会导致表格在两个计数之间插值(如果有) 两个小时之间不算 例:下午1点有4条记录,下午2点有0条记录,下午3点有2条记录。该表将在4和2之间绘制一条直线,因此在表上显示下午2点有3条记录,而实际上没有记录 我确信原因是我没有为不存在的记录提供null或0值,但我不确定如何去做 表中的一些信息: id int AI TagNumb

我试图从MySQL数据库中以小时为单位绘制某个给定ID的记录数

我遇到的问题是,如果给定的ID在给定的时间内有0条记录,我就不会为表生成数据点。这会导致表格在两个计数之间插值(如果有) 两个小时之间不算

例:下午1点有4条记录,下午2点有0条记录,下午3点有2条记录。该表将在4和2之间绘制一条直线,因此在表上显示下午2点有3条记录,而实际上没有记录

我确信原因是我没有为不存在的记录提供null或0值,但我不确定如何去做

表中的一些信息:

id             int AI
TagNumber      int
TimeStamp      timestamp
BatteryStatus  varchar
Location       int
下面是我用来计算每小时给定标记号的实例数的php代码

$result = $mysqli->('SELECT hour(TimeStamp) as Hour, count(*) as Count FROM table WHERE Location = 1 AND TagNumber = 12345678 GROUP BY Hour');
// The values here are hard coded for testing purposes. 

$rows = array();
$table = array();
$table['cols'] = array(
    array('label' => 'Hour', 'type' => 'number'),
    array('label' => 'Count', 'type' => 'number')
);

while($row = mysqli_fetch_assoc($result)) {
    $temp = array();
    $temp[] = array('v' => (int) $row['Hour']);
    $temp[] = array('v' => (int) $row['Count']);
    $rows[] = array('c' => $temp);
}
$table['rows'] = $rows;
$jsonTable = json_encode($table);
然后,我将json编码的表传递给google可视化api

我认为我需要做的是将每小时1到24之间的值设置为0,我不知道如何实现这一点

我尝试用0作为“Count”值初始化一个从1到24小时的数组,但是我肯定做了一些错误的事情,php抛出了错误

12处的点应为0,但它在11和13之间插值

这是我的价值观图表:

  • 第10小时->计数4
  • 第11小时->计数2
  • 第13小时->计数1
  • 第14小时->计数3
在这种情况下,我需要1->9、12和15->24小时来显示0。

试试这个:

$result = $mysqli->('SELECT hour(TimeStamp) as Hour, count(*) as Count FROM table WHERE Location = 1 AND TagNumber = 12345678 GROUP BY Hour');
// The values here are hard coded for testing purposes. 

$rows = array();
$table = array();
$table['cols'] = array(
    array('label' => 'Hour', 'type' => 'number'),
    array('label' => 'Count', 'type' => 'number')
);

$hoursNotAvail = array(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23);
while($row = mysqli_fetch_assoc($result)) {
    $temp = array();
    $temp[] = array('v' => (int) $row['Hour']);
    $temp[] = array('v' => (int) $row['Count']);
    $rows[] = array('c' => $temp);
    $hoursNotAvail[(int) $row['Hour']] = -1;
}
foreach($hoursNotAvail as $k => $v){
    if($v != -1){
        $temp = array();
        $temp[] = array('v' => $k);
        $temp[] = array('v' => 0);
        $rows[] = array('c' => $temp);
    }
}

$table['rows'] = $rows;
$jsonTable = json_encode($table);

谢谢,最后我做了一些非常相似的事情。效果很好