将数据从文本文件获取到数组并在PHP中绘制

时间:2012-10-17 16:54:57

标签: php php-packages

我正在尝试从文本文件中读取数据,然后使用PHPplot绘制它。 文本文件如下所示:

0   24
1   28
2   30
3   35
4   40

我正在尝试将数据转换为:

array(array(0,24),array(1,28),array(2,30),array(3,35),array(4,40))

我在php中的代码就像这样

 $file = fopen("data2.txt", "r");;
            while (!feof($file)) {
                $line_of_text .= fgets($file);
            }
            $members = explode("\n", $line_of_text);
            fclose($file);

for ($j=0; $j<=10; $j++)
  {       
  $parts[$j]=explode("   ", $members[$j]);       
  }
# plot 
require_once 'phplot.php';
    for ($x = 0; $x <= 5; $x += 1)
      $data[] = array('', $parts[$x][0], $parts[$x][1]);
    $plot = new PHPlot(800, 600);
    $plot->SetPrintImage(False); // No automatic output
    $plot->SetImageBorderType('plain');
    $plot->SetPlotType('lines');
    $plot->SetDataType('data-data');
    $plot->SetDataValues($data);
    $plot->SetPlotAreaWorld(0, 0, 10, 40);
    $plot->SetDrawYGrid(True);
    $plot->DrawGraph();

问题在于:

$data[] = array('', $parts[$x][0], $parts[$x][1]);

它不会绘制$ parts [$ x] [1]数字。当我说打印$ parts [$ x] [1]值时,它会在浏览器上打印它,但只是不绘制它。有趣的是,当我要求它绘制

$data[] = array('', $parts[$x][0], $parts[$x][1]);

这次是情节!!

var_dump($ parts)给出了:

array(11) { [0]=> array(2) { [0]=> string(1) "0" [1]=> string(3) "24 " } [1]=> array(2) { [0]=> string(1) "1" [1]=> string(3) "28 " } [2]=> array(2) { [0]=> string(1) "2" [1]=> string(3) "30 " } [3]=> array(2) { [0]=> string(1) "3" [1]=> string(3) "35 " } [4]=> array(2) { [0]=> string(1) "4" [1]=> string(2) "40" } [5]=> array(1) { [0]=> string(0) "" } [6]=> array(1) { [0]=> string(0) "" } [7]=> array(1) { [0]=> string(0) "" } [8]=> array(1) { [0]=> string(0) "" } [9]=> array(1) { [0]=> string(0) "" } [10]=> array(1) { [0]=> string(0) "" } }

var_dump($ data)也给出了:

array(5) { [0]=> array(3) { [0]=> string(0) "" [1]=> int(0) [2]=> string(3) "24 " } [1]=> array(3) { [0]=> string(0) "" [1]=> int(1) [2]=> string(3) "28 " } [2]=> array(3) { [0]=> string(0) "" [1]=> int(2) [2]=> string(3) "30 " } [3]=> array(3) { [0]=> string(0) "" [1]=> int(3) [2]=> string(3) "35 " } [4]=> array(3) { [0]=> string(0) "" [1]=> int(4) [2]=> string(2) "40" } }

请帮助我多多谢谢

1 个答案:

答案 0 :(得分:1)

Reza,根据你的var_dump,数组中的值是字符串,你在问题中显示的数组有整数。以下是将这些字符串转换为整数的一种方法。

    for ($j=0; $j<=10; $j++){
        $tmp=explode("   ", $members[$j]);
        for($k=0; $k<count($tmp); $k++){
            $tmp[$k] = intval($tmp[$k]);
        }
        $parts[$j]=$tmp;     
    }