3

我现在正在训练PHP。关于以下代码,我从文件中读取了一个时间表,如果number($lineNo)文件中有给定的行,则覆盖或删除。

然后我有一个问题。是在file pointer执行 fwrite 功能时更新 a 的时间吗?

<?php
    $filename = "sample.txt";
    function edit($filename,$lineNo){
        $new_line = "Hello";
        $schedule_list = file($filename);
        $fp = fopen($filename,"w");
        foreach($schedule_list as $schedule_lineNo => $line){
            if($schedule_lineNo == $lineNo){
                if($_POST["mode"] == "overwrite"){
                    fwrite($fp,$new_line);
                }
                elseif($_POST["mode"] == "delete"){

                }
            else{
                fwrite($fp,$line);
            }
        }
        fclose($fp);
    }
?>
4

1 回答 1

2

不要把事情复杂化。由于您使用file()函数并提供所需的行号,因此请使用该行号来指定您将覆盖的数组键。例子:

$filename = "sample.txt";

function edit($filename, $lineNo){
    $new_line = "Hello";
    $schedule_list = file($filename, FILE_SKIP_EMPTY_LINES | FILE_IGNORE_NEW_LINES);
    if(!isset($schedule_list[$lineNo-1])) {
        return false;
    }

    if(/** overwrite **/) {
        // use the line number as key and use it on the array returned by file()
        $schedule_list[$lineNo - 1] = $new_line; // numeric indices start at zero
    } elseif(/** delete **/) {
        unset($schedule_list[$lineNo-1]);
    }

    file_put_contents($filename, implode("\n", $schedule_list));

    return true;
}

var_dump(edit($filename, 1));
于 2014-08-26T04:37:24.777 回答