2011-10-06 137 views
0

fegtcsv确实在PHP 获取CSV文件的数据的工作,我写了这个代码从我的输入文件读取数据我如何从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); 
?> 

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

回答

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; 
} 

提示:您还可以使用循环内的循环......

+0

感谢@deceze。这是一个很好的观察。以及我必须更多地处理csv文件和php脚本。我想学习这些东西。我相信会有更多这样的事情。您为此建议的任何特定链接?我的意思是CSV和PHP?这将不胜感激。 :) – user913492

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 
相关问题