0

我正在尝试从文本文件中读取数据,然后使用 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] 数字。当我说 print $parts[$x][1] values 它会在浏览器上打印它,但不要绘制它。有趣的是,当我要求它进行绘图时

$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" } }

请帮助我非常感谢

4

1 回答 1

1

Reza,根据您的 vardump,您的数组中的值是字符串,而您在问题中显示的数组具有整数。这是将这些字符串转换为整数的一种方法。

    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;     
    }
于 2012-10-17T17:13:07.833 回答