1

嗨,我在重写文件时遇到问题。当我删除文件中的最后一行并将数组重写回临时文件时,我会得到一个空白,就像最后会弄乱项目中的其他文件一样。

这是联系人文本文件

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

谢谢是提前!

4

1 回答 1

0

在您的联系人文本文件中,第 1 行和第 2 行以换行符 (\n) 结尾,第 3 行没有。因此,如果您删除第 3 行,文件将以换行符结束,因此显示一个空行。如果您删除第 1 行或第 2 行,则没有换行符的第 3 行将保留,并且您不会得到额外的空行。要么在行的每一端添加一个换行符并处理空行,要么删除数组最后一个元素中的换行符,将其写入磁盘。

于 2013-02-27T23:33:47.697 回答