如何使用 PHP 函数 fgetcsv() 或 fopen() 跳过前 n 行?

使用 打开 CSV 文件后fopen(),我目前正在跳过这些文件的前三行,如下所示:


fgetcsv($file, 0, ';');

fgetcsv($file, 0, ';');

fgetcsv($file, 0, ';');

有没有更好的方法来跳过前 n 行?


慕仙森
浏览 121回答 3
3回答

繁花如伊

如果您需要跳过多行,只需添加循环内已有的“一次性读取”代码的一个实例即可for。循环数等于跳过的行数(例如 8 行):for&nbsp;($i&nbsp;=&nbsp;0;&nbsp;$i&nbsp;<&nbsp;8;&nbsp;$i++)&nbsp;{&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;fgetcsv($file,&nbsp;0,&nbsp;';'); }在开始主while循环获取您关心的 CSV 行之前执行此操作。您可以将循环转变为实用函数——如果您发现自己经常以不同的跳跃长度执行此操作。function&nbsp;fskipcsv_lines($handle,&nbsp;int&nbsp;$lines)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;($i&nbsp;=&nbsp;0;&nbsp;$i&nbsp;<&nbsp;$lines;&nbsp;$i++)&nbsp;{&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fgetcsv($handle,&nbsp;0,&nbsp;';'); &nbsp;&nbsp;&nbsp;&nbsp;} }够简单的。相同的构造适用于您不需要从中获取返回值的任何其他函数的“哑”重复,该函数只需要被调用 N 次。PS 不要将“跳行”检查例程放在主 CSV 迭代循环中。为什么?因为检查(例如$row < 3; 或in_array($row, $skips))会在每次循环迭代时发生。假设您需要读取 100,000 多行,开销将开始增加,因为前几行(现在已经过去)而给每个循环迭代带来不必要的负担。

弑天下

查看此代码。$file = fopen('example.csv', 'r');  // Here example is a CSV name$row = 1;$number_to_skip = 3while (($line = fgetcsv($file,0, ",")) !== FALSE) {// $line is an array of the csv elementsif($row < $number_to_skip){   $row++; continue;   // continue is used for skip row 0,1,2} print_r($line);}

拉丁的传说

你做得对,但是如果你要跳过很多代码,这段代码可能会有所帮助。:$skippTheseLines = array(1,2,3);$i = 0;$totlLines= 10000;while (($emapData = fgetcsv($file, $totalLines, ";")) !== FALSE) {&nbsp; &nbsp;if(in_array($i, $skippTheseLines)) {&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;continue;&nbsp;&nbsp; &nbsp;}else{&nbsp; &nbsp; &nbsp; &nbsp;// rest of your code&nbsp; &nbsp;}&nbsp; &nbsp; $i = $i + 1;}
打开App,查看更多内容
随时随地看视频慕课网APP