当我删除文件中的最后一行时,我得到一个空行PHP

时间:2013-02-27 20:45:16

标签: php arrays file line

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

这是联系人文本文件

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

谢谢你提前!

1 个答案:

答案 0 :(得分:0)

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