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 に答える