关于PHP中的文件指针
我刚刚在培训关于PHP中的文件指针,php,file-pointer,Php,File Pointer,我刚刚在培训PHP。 关于下面的代码,我从文件中读取了一个计划,如果文件中有给定的行number($lineNo),则覆盖或删除 那我有个问题。 执行fwrite功能后,文件指针是否更新 <?php $filename = "sample.txt"; function edit($filename,$lineNo){ $new_line = "Hello"; $schedule_list = file($filename);
PHP
。
关于下面的代码,我从文件中读取了一个计划,如果文件中有给定的行number($lineNo)
,则覆盖或删除
那我有个问题。
执行fwrite功能后,文件指针是否更新
<?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);
}
?>
不要把事情复杂化。由于您使用了
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));
这很方便,因为文件内容函数将“fopen”、“fwrite”和“fclose”合并在一起