2017-12-17 18 views
-1

すべてのページをリロードするときに+1を$iにしたいと考えています。 私は非常に単純な問題に遭遇しました。私は解決策をオンラインで見つけるのに苦労しています。文字列と数字を合計で加算します。

HERESに私のコード:

$backupNumber = fopen("$v", "r+") or die("Unable to open file!"); 
$i = fread($backupNumber,filesize("invoices/invoice1/backupN.txt")); 

$i = intval($i); 
$i = $i + 1; 
echo $i; 
fwrite($backupNumber,$i); 
$a = "invoices/" . $invoiceN . "/backup" . $i; 
fclose($backupNumber); 

とtxtファイルに単純にオフに開始するための番号 '1' です。

ページをリロードするときに問題が発生私は$エコーときに出力します
2、次に13その後、1214その後、12131215、その後2147483648など
私は、単純な出力
2にそれをしたい、その後3その後4など

答えて

5

あなたは、テキストファイルを追加し、これが起こっている理由です。

私の助言はfile_get_contentsfile_put_contentsです。

$i = file_get_contents("invoices/invoice1/backupN.txt"); 
$i++; 
Echo $i; 
file_put_contents("invoices/invoice1/backupN.txt" $i); 

ファイルgetとputの内容は、常にテキストファイル全体を読み取ります。
私はあなたが文字列をキャストする必要はないと思うが、それはそれなしで動作するはずです。

コードも1つのライナーにすることができます。それは面倒だがコンパクトだ。

file_put_contents("invoices/invoice1/backupN.txt", file_get_contents("invoices/invoice1/backupN.txt")+1); 
2

ファイルから数字を読み取った後、ハンドルはその最後に配置されます。そのため、数学がサウンドである間に、ファイルに上書きするのではなく新しい番号を追加します。これを処理する

一つのアプローチは、書き込みの前にハンドルを使用fseekをリセットすることです:

fseek($backupNumber, 0); 
fwrite($backupNumber, $i); 
-1

テーマに、別のバリエーション多分...

function updatecount(){ 
    $file='invoices/invoice1/backupN.txt'; 
    if(!realpath($file))$i=0; 
    $i=intval(trim(file_get_contents($file))) + 1; 
    file_put_contents($file, $i); 
    return $i; 
} 

$count=updatecount(); 
echo strval($count); 
1

あなたはなぜこれが起こっているthatsのファイルを追加しています。 r +モードを使用する代わりに、w +モードを使用してください。 r +モードはファイルを開き、読み取りと書き込みを許可しますが、コンテンツの書き込みは許可されません。 w +モードでは、常に新しい空のファイルが作成されます。

はあなたにも、あなたがファイルに0番目の場所にポイントして、ファイルの内容を上書きする)(FSEEKできエルス

$backupNumber = fopen("$v", "r+") or die("Unable to open file!"); 
$i = fread($backupNumber,filesize("invoices/invoice1/backupN.txt")); 
fclose($backupNumber); 

$backupNumber = fopen("$v", "w+") or die("Unable to open file!"); 
$i = intval($i); 
$i = $i + 1; 
echo $i; 
fwrite($backupNumber,$i); 
$a = "invoices/" . $invoiceN . "/backup" . $i; fclose($backupNumber); 

ような何かを行います。

関連する問題