使用Libchart在PHP中创建图形的问题

时间:2014-06-11 18:52:08

标签: php

我们希望在PHP中创建一个带有Libchart的心电图,它从文本文件中获取数据。

这是我们的代码:

<?php
include "libchart\libchart\classes\libchart.php";    
$file_handle = fopen("arrythmia1.txt","r");    
$i=0;

while (! feof($file_handle)){
    $file=fgets($file_handle);
    $parts= preg_split("[:|;]",$file);
    $x_values[$i]= (float) $parts[1];
    $y_values[$i]=(float) $parts[2];
    $i=$i+1;

    echo $parts[1]."\n". $parts[2]."\n";
}

$data_length=sizeof($x_values);
$chart=new LineChart();
$dataset=new XYDataset();

for($i=0; $i<data_length; $i++){ 
    $dataset -> addpoint (new Point(".",$y_values[$i]));
}

$chart->getPlot()->setGraphCaptionRatio(0.62);
$chart ->setDataset($dataset);
$chart -> render ("133.png");
?>

这是警告:

  

注意:使用未定义的常量data_length - 假设&#39; data_length&#39;   在第24行的C:\ xampp \ htdocs \ site \ uploads \ gr.php

它显示的图形没有打印值。

以下是arrythmia1.txt

中的一些值
0:00.000; -0.145
0:00.003; -0.145
0:00.006; -0.145
0:00.008; -0.145
0:00.011; -0.145
0:00.014; -0.145
0:00.017; -0.145
0:00.019; -0.145
0:00.022; -0.120
0:00.025; -0.135
0:00.028; -0.145
0:00.031; -0.150
0:00.033; -0.160
0:00.036; -0.155
0:00.039; -0.160
0:00.042; -0.175
0:00.044; -0.180
0:00.047; -0.185
0:00.050; -0.170
0:00.053; -0.155
0:00.056; -0.175
0:00.058; -0.180
0:00.061; -0.190
0:00.064; -0.180
0:00.067; -0.155
0:00.069; -0.135
0:00.072; -0.155
0:00.075; -0.190
0:00.078; -0.205
0:00.081; -0.235
0:00.083; -0.225
0:00.086; -0.245
0:00.089; -0.250
0:00.092; -0.260
0:00.094; -0.275
0:00.097; -0.275
0:00.100; -0.275
0:00.103; -0.265
0:00.106; -0.255
0:00.108; -0.265

1 个答案:

答案 0 :(得分:1)

错误中清楚地解释了问题;强调我的:

  

注意:使用未定义的常量data_length - 假设为'data_length'   在第24行的C:\ xampp \ htdocs \ site \ uploads \ gr.php

所以看看这里:

for($i=0; $i<data_length; $i++){ 
    $dataset -> addpoint (new Point(".",$y_values[$i]));
}

问题是data_length。当您在PHP中使用data_length之类的文本而不在其前面加$时,它会认为该字符串是常量。这就是错误意味着什么,Use of undefined constant data_length - assumed 'data_length'

要解决问题,data_length应更改为变量$data_length,如下所示:

for($i=0; $i<$data_length; $i++){ 
    $dataset -> addpoint (new Point(".",$y_values[$i]));
}