Javascript 错误:给定的行大小不同于5(表中的列数)

Javascript 错误:给定的行大小不同于5(表中的列数),javascript,php,charts,google-visualization,Javascript,Php,Charts,Google Visualization,很难理解一个基本的东西。你能帮我一下吗 我正试图在谷歌图表中创建一个折线图。出于某种原因,它不允许我使用空值 首先,我通过PHP从Postgres获取数据: $rows = pg_fetch_all($fetch); 然后,我尝试绘制图表: <html> <head> <script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script

很难理解一个基本的东西。你能帮我一下吗

我正试图在谷歌图表中创建一个折线图。出于某种原因,它不允许我使用空值

首先,我通过PHP从Postgres获取数据:

$rows = pg_fetch_all($fetch); 
然后,我尝试绘制图表:

<html>
  <head>
    <script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
    <script type="text/javascript">
      google.charts.load('current', {packages: ['corechart', 'line']});
      google.charts.setOnLoadCallback(drawBasic);

      function drawBasic() {

            var data = new google.visualization.DataTable();
            data.addColumn('string', 'X');
            data.addColumn('number', 'PD1');
            data.addColumn('number', 'CD1');
            data.addColumn('number', 'PD2');
            data.addColumn('number', 'CD2');

            data.addRows([<?php
            $result = '';
            foreach($rows as $data) {
              $result .= "['{$data['m']}', {$data['PD1']}, {$data['CD1']}, {$data['PD2']}, {$data['CD2']}],";
            }
            $result = rtrim($result,',');
            echo $result;
            ?>])

            var options = {
              hAxis: {
                title: 'T'
              },
              vAxis: {
                title: 'C'
              },
              interpolateNulls: true,
              width: 900,
              height: 500,
              title: 'Blahblah'
            };

            var chart = new google.visualization.LineChart(document.getElementById('chart_div'));

            chart.draw(data, options);
          }
    </script>
  </head>
  <body>
    <div id="chart_div"></div>
  </body>
</html>
当数组中的某个值丢失时会发生这种情况,例如:

data.addRows([['00:00', 85, 88, 6, 10],['00:01', 78, 86, 4, 9],['00:02', 110, 64, 8, 8],['00:03', 105, 82, , 4]])
如果我将查询更改为选择所有值都存在的数据,则显示的图表不会出现任何问题。我认为传递空值是可以的,所以图表的某些部分会有空白点?将空值更改为0不是一个选项,因为结果会产生误导

也许应该以某种特定的方式将null从PHP传递到JS


提前谢谢

这可能是一个愚蠢的建议,但是您可以尝试在元素为null的情况下使用0吗?如果您对数据没有控制权,您可以循环使用它并手动指定=0,其中Null最好在PHP中创建最终的数据数组,然后使用
json\u encode()
将其转换为JavaScript。在折线图中,收到空值时代码通常不会中断。它只是跳过了这个值。我在上使用了相同的代码。它很好用。您还使用了
interpolutenulls
,它解决了这个问题。奇怪的是,你仍然在面对它。目前你正在触发谷歌图表中的php代码(这很好),但我建议你在生成图表之前执行该代码,然后只推送值。这是正确的。。。
data.addRows([['00:00', 85, 88, 6, 10],['00:01', 78, 86, 4, 9],['00:02', 110, 64, 8, 8],['00:03', 105, 82, , 4]])