亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

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

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

PHP
慕仙森 2023-08-19 14:26:50
使用 打開 CSV 文件后fopen(),我目前正在跳過這些文件的前三行,如下所示:fgetcsv($file, 0, ';');fgetcsv($file, 0, ';');fgetcsv($file, 0, ';');有沒有更好的方法來跳過前 n 行?
查看完整描述

3 回答

?
繁花如伊

TA貢獻2012條經驗 獲得超12個贊

如果您需要跳過多行,只需添加循環內已有的“一次性讀取”代碼的一個實例即可for。循環數等于跳過的行數(例如 8 行):

for ($i = 0; $i < 8; $i++) { 
    fgetcsv($file, 0, ';');
}

在開始主while循環獲取您關心的 CSV 行之前執行此操作。您可以將循環轉變為實用函數——如果您發現自己經常以不同的跳躍長度執行此操作。

function fskipcsv_lines($handle, int $lines) {
    for ($i = 0; $i < $lines; $i++) { 
        fgetcsv($handle, 0, ';');
    }
}

夠簡單的。相同的構造適用于您不需要從中獲取返回值的任何其他函數的“啞”重復,該函數只需要被調用 N 次。

PS 不要將“跳行”檢查例程放在主 CSV 迭代循環中。為什么?因為檢查(例如$row < 3; 或in_array($row, $skips))會在每次循環迭代時發生。假設您需要讀取 100,000 多行,開銷將開始增加,因為前幾行(現在已經過去)而給每個循環迭代帶來不必要的負擔。


查看完整回答
反對 回復 2023-08-19
?
弒天下

TA貢獻1818條經驗 獲得超8個贊

查看此代碼。

$file = fopen('example.csv', 'r');? // Here example is a CSV name

$row = 1;

$number_to_skip = 3

while (($line = fgetcsv($file,0, ",")) !== FALSE) {

// $line is an array of the csv elements

if($row < $number_to_skip)

{?

? $row++; continue;? ?// continue is used for skip row 0,1,2

}?

print_r($line);


}


查看完整回答
反對 回復 2023-08-19
?
拉丁的傳說

TA貢獻1789條經驗 獲得超8個贊

你做得對,但是如果你要跳過很多代碼,這段代碼可能會有所幫助。:


$skippTheseLines = array(1,2,3);

$i = 0;

$totlLines= 10000;


while (($emapData = fgetcsv($file, $totalLines, ";")) !== FALSE) {


   if(in_array($i, $skippTheseLines)) { 

       continue; 

   }else{

       // rest of your code

   }


    $i = $i + 1;

}


查看完整回答
反對 回復 2023-08-19
  • 3 回答
  • 0 關注
  • 162 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號