2013-09-27 188 views
1

我有讀取數組中的csv文件的函數。我的代碼是如何使用fgetcsv函數從csv文件跳過特定行

public function csvExtract() 
    { 


     $file_handle = fopen(text.csv, 'r'); 

     while (!feof($file_handle)) 
     { 
      arraydata[] = fgetcsv($file_handle, 1024); 
     } 

     fclose($file_handle); 
    } 

我需要的是:

我的文件包含最後一行其中有FINAL TOTAL該行我想跳過。

如何做到這一點。誰可以幫我這個事。

謝謝。

回答

1

您可以使用continue聲明跳過PHP中的任何循環。這隻會跳過循環迭代,與break語句相同,這將完全結束循環。
利用這一點,就可以形成循環何時跳過一個條件:

while (!feof($file_handle)) { 
    $csv = fgetcsv($file_handle, 1024); 
    // check your condition and skip if needed... 
    if (in_array('FINAL TOTAL', $csv)) continue; 
    $data[] = $csv; 
} 
+0

謝謝NDM。但在這裏有一個小問題,當我使用它時,它給我的交戰如下:警告:in_array()期望參數2是數組,99中給出的布爾值,其中行99具有此語句if(in_array('FINAL TOTAL',$ csv ))繼續; – snehal

+0

那麼,你必須確保'if'中的代碼對你的數據是正確的,同時一定要檢查'fgetcsv'是否返回一個數組,因爲它在失敗時返回'false' – NDM

0

快速骯髒的解決方案

... 
fclose($file_handle); 
if($arraydata) { 
    unset($arraydata[count($arraydata)-1)]); 
} 

只是 「刪除」 從您的進口

+0

謝謝大家。我得到了我的輸出。 – snehal

2

最後一行一旦你完成你讀的循環:

end($arraydata); 
$key = key($arraydata); 
unset($arraydata[$key]); 

或者乾脆

array_pop($arraydata);