2016-04-30 7 views
1

フォルダ内の各ファイルを開くためにこのコードを取得しました。値を5ずつ減らしてから、既存の内容を上書きします。文字列が新しい行を追加していて、わかりません

<?php 
    foreach (glob("users/*.php") as $filename) {  
     $array = file($filename); 

     $wallet = $array[0]; 
     $time = $array[1]; 
     $status = $array[2]; 
     $steamid = $array[3]; 

    $process = fopen($filename, "w") or die("Unable to open file!"); 
     $time = $time - 5; 
     $newdata = $wallet . "\n" . $time . "\n" . $status . "\n" . $steamid; 
     fwrite($process, $newdata); 
    fclose($process); 
} 
?> 

私はスクリプトを実行する前に、開いているファイルは次のようになります。

680 

305 
0 

74892748232 

の場合:スクリプトが実行された

680 
310 
0 
74892748232 

した後、ファイルは次のようになりますスクリプトが再度実行されると、より多くの行が追加され、ファイルがさらに破損します。

ファイルの文字列をここに作成されます。

$newdata = $wallet . "\n" . $time . "\n" . $status . "\n" . $steamid; 

なぜそれが$時間後に$財布と$の状態の後に空行を追加しますが、しないのですか?私が代わりにこの問題を回避することができどのように書き留め:

$wallet 
$time 
$status 
$steamid 

おかげで多くを事前に:)

+0

DepeあなたのOSが新しい行をどのように扱うかについてnds。 '$ walletを使ってみてください。 PHP_EOL。代わりに$ time'を使用します。 –

+0

この2つのフラグをファンクションファイルで設定すると非常に便利です - FILE_IGNORE_NEW_LINES と FILE_SKIP_EMPTY_LINES – splash58

答えて

0

file_put_contents()

あなたが使用することもでき、この溶液で試してみてください:。

file_put_contents($filename, implode("\n", $array) . "\n", FILE_APPEND); 

このSOの質問から https://stackoverflow.com/a/3066811/1301180

関連する問題