2011-10-06 131 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 
相關問題