如何从php中获取csv文件中特定行的数据?

时间:2011-10-06 14:09:46

标签: php csv

fegtcsv完成了在php中获取csv文件数据的工作 我写了这段代码来从我的输入文件中获取数据

<?php
$file_handle = fopen("input.csv", "r");
while(!feof($file_handle)){
    $line_of_text=fgetcsv($file_handle,3020);
    $a= $line_of_text[1];
    $b=$line_of_text[2];
    $c=$line_of_text[3];
    $d=$line_of_text[4];
   }
   fclose($file_handle);
?>

现在我想要做的是在每一行的第三个数据(即$ c)之间进行一些物质操作。例如。在第1行添加$ c和第2行的$ c以及更多的数学运算。只有当我可以将这些数据作为c1获得时,我才能这样做,这将是第一行c2的$ c,即第二行的$ c。但我不知道该怎么做。上面的脚本打印文件的每一行。我无法控制要打印哪一行(或行)的数据。我怎么做 ?我缺少阅读或学习的任何东西?请告诉我。

2 个答案:

答案 0 :(得分:0)

每次拨打fgetcsv时,您都会获得另一条线路。因此:

while (!feof($file_handle)){
    $line_of_text = fgetcsv($file_handle, 3020);
    $a1 = $line_of_text[1];
    $b1 = $line_of_text[2];
    $c1 = $line_of_text[3];
    $d1 = $line_of_text[4];

    $line_of_text = fgetcsv($file_handle, 3020);
    $a2 = $line_of_text[1];
    $b2 = $line_of_text[2];
    $c2 = $line_of_text[3];
    $d2 = $line_of_text[4];

    $line_of_text = fgetcsv($file_handle, 3020);
    $a3 = $line_of_text[1];
    $b3 = $line_of_text[2];
    $c3 = $line_of_text[3];
    $d3 = $line_of_text[4];

    echo $a1 + $a2 + $a3;
}

提示:你也可以在循环中使用循环......

答案 1 :(得分:0)

在将每一行存储在数组中之后,请尝试以下行...

$csv = array();
$file = fopen('source.csv', 'r');
while (($result = fgetcsv($file,0,";")) !== false)
{
$csv[] = $result;
}
fclose($file);



function content_to_columns($data){
foreach ($data as $line=>$value){
$data[$line]=explode(";",$value);
}
print_r[$data]; //comment when not needed.
}

content_to_columns($csv_file); //

然后你可以真正得到任何值知道线和列数让我们说 你的数据是

A | B
10| 0
20|20

$ csv [0] [0]是10

使用它进行操作数学运算就像:

$csv[0][0]*=5;  //multiplies by 5 the cell value