2017-12-17 1 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'로 시작하는 것입니다. 페이지를 새로 고침 할 때 I는 $ 에코 때

문제 나 그 출력 발생 후 2147483648 다음
2 후 13 일 후 1,214 12,131,215 등
I는 3 다음 4 등

간단한 출력
2 원하는

답변

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 내용은 항상 전체 텍스트 파일을 읽습니다.
문자열을 캐스팅 할 필요가 없다고 생각합니다. 문자열 없이도 작동합니다.

코드도 하나의 라이너가 될 수 있습니다. 지저분하지만 컴팩트합니다.

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

당신은 왜 이런 일 파일 먹으 렴을 추가한다. r + 모드를 사용하는 대신 w + 모드를 사용하십시오. r + 모드는 파일을 열어 읽기 및 쓰기 만 가능하지만 내용을 쓰지는 않습니다. w + 모드에서와 같이 항상 새로운 빈 파일이 생성됩니다.

수행 그밖에

$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); 

같은 당신 또한 당신이 fseek의 수() 파일에서 0 번째 위치에 포인트 및 파일의 내용을 무시합니다.

관련 문제