我有重写文件的问题。当我删除文件中的最后一行并将数据重写回临时文件时,我会得到一个空白,就像在项目中弄乱其他文件一样。
这是联系人文本文件
1|Mr.|Blank|Blank|||||||||
2|Mr.|Blank2|Blank2|||||||||
3|Mr.|Blank3|Blank3|||||||||
这是删除的代码
<?php
$select = 3;
$tempFilename = 'contacts_temp';
touch($tempFilename);
$file_name = "contacts";
$file = fopen($file_name, "r+")or exit("Unable to open file!");
$tempfile = fopen($tempFilename, "r+")or exit("Unable to open file!");
for($c=0;!feof($file);$c++)
{
$top = fgets($file);
$contactsArray[$c] = $top;
}
for ($d=0; $d!=count($contactsArray);$d++){
//echo $usersArray[$d];
$tempusersArray[$d] = explode('|', $contactsArray[$d]);
}
rewind($tempfile);
for ($c=0;$c<count($contactsArray);$c++){
if($tempusersArray[$c][0]==$select){
unset($contactsArray[$c]);
}elseif($contactsArray[$c]==NULL){
unset($contactsArray[$c]);
break;
}else{
trim($contactsArray[$c]);
}
}
var_dump($contactsArray);
file_put_contents($tempFilename,$contactsArray);
?>
当这个运行时,我会像这样得到一个文件
1|Mr.|Blank|Blank|||||||||
2|Mr.|Blank2|Blank2|||||||||
//There would be a blank line here
谢谢你提前!
答案 0 :(得分:0)
在联系人文本文件中,第1行和第2行以换行符(\ n)结尾,第3行则不行。因此,如果删除第3行,文件将以换行符结束,因此显示空行。如果删除第1行或第2行,则第3行没有换行符,并且您不会获得额外的空行。要么为行的每一行添加换行符并处理空行,要么删除数组的最后一个元素中的换行符,并将其写入磁盘。