Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP循环超过txt文件输出后删除行_Php - Fatal编程技术网

PHP循环超过txt文件输出后删除行

PHP循环超过txt文件输出后删除行,php,Php,我有一个php脚本,我在文本文件中的所有行上循环。如何在读取该行后删除该行,以便在脚本结束时将从文件中删除所有已输出的行 $file = $dataDoc['file']; if(is_file($file)){ $contents = file($file); foreach($contents as $line) { echo $line . "\n"; // Delete line here and keep looping over t

我有一个php脚本,我在文本文件中的所有行上循环。如何在读取该行后删除该行,以便在脚本结束时将从文件中删除所有已输出的行

$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...
     }
}

从$contents数组中删除的文件中读取的每一行,然后在没有该行的情况下重写该文件。这不是很有效,但只是一种方法。

简单的解决方案可以是:

$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);

你的意思是-从文件中删除行?是的,这就是我的意思问题是,这种开销有什么好处?这样,最后只需存储一个空文件。如果读取后删除是为了在发生错误时创建某种类型的备份以防止重复计算,那么这一点都没有帮助
$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);