2013-09-27 136 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);