2017-04-09 43 views
2

我有一個PHP腳本,我正在循環遍歷文本文件中的所有行。如何刪除該行被讀取後,所以由腳本都已經輸出將會從文件中刪除行的結束......PHP循環播放txt文件後刪除行

$file = $dataDoc['file']; 
if(is_file($file)){ 
    $contents = file($file); 
    foreach($contents as $line) { 
     echo $line . "\n"; 
     // Delete line here and keep looping over the rest of the lines... 
    } 
} 
+0

你的意思是 - 從文件中刪除行? –

+0

是的,這就是我的意思 – LargeTuna

回答

-1

簡單的解決方案可能是:

$contents = file($file); 
foreach($contents as &$line) { // add `&` to modify source line 
    echo $line . "\n"; 

    if (/*Some case is true*/) { 
     $line = null;   // unset a line if needed 
    } 
} 

// lines that are NULL will not be written to a file 
$writeRes = file_put_contents($file, $contents); 
+0

這很好,謝謝! – LargeTuna

+0

問題是,這個開銷有什麼好處?這樣,你可以在最後存儲一個空文件。如果讀取後的刪除是爲了在發生錯誤時創建某種備份以防止重複計算,則完全沒有任何幫助 – Sebastian

1
$file = $dataDoc['file']; 
if(is_file($file)){ 
    $contents = file($file); 
    foreach($contents as $i => $line) { 
     echo $line . "\n"; 
     unset($contents[$i]); 
     fopen($file, 'w'); 
     fwrite(implode('\n', $contents)); 
     fclose($file); 
    } 
} 

每一行你正在閱讀在你從$ contents數組中刪除的文件中,然後重寫沒有該行的文件。這不是非常有效,但只是一種方法。