2011-12-15 9 views
1

ヒットカウンタを作成しようとしましたが、ヒットカウンタは特定の数値(この場合は5)に達するとヒットカウンタを表示しなくなります。これは私のコードですシンプルなPHPヒットカウンタ/ if else文

<?php 
$count = ("hits.txt"); 
$hits = file($count); 
$hits[0] ++; 
$fp = fopen($count , "w"); 
fputs($fp , "$hits[0]"); 
fclose($fp); 

if ($hits > 5) { 
    echo "More than 5 hits"; 
    } 

else { 
    echo $hits[0]; 
    } 

?> 

私は間違っていますか?

答えて

6

あなたはものをオーバーコンプリートしています。それはこのようにそれを行うにははるかに容易になります - あなたはすでにfputsに使用し、あなたの現在のコードについては

$hits = file_get_contents('hits.txt'); 
++$hits; 
file_put_contents('hits.txt', $hits); 

if($hits > 5) { 
    echo 'Over 5!'; 
} 
// else etc 

、問題は、あなたが正しい構文$hits[0]でヒット数をテストしていないということです - ただし、間違った$hitsを使用してください。 fileの働きにより、$hits自体が配列であることに注意してください。 PHPはうれしいことに、配列を整数と比較させて、rules that define how the comparison worksがありますが、そこには行きません。

+0

+1私の答えは、最初の試みが失敗した理由を示していますが、これは全体を正しく処理する方法です –

+0

これはずっと簡単です。あなたの説明と支援をありがとう。 – colindunn

3

あなたは$hits[0] > 5が必要です

if ($hits[0] > 5) { 
    echo "More than 5 hits"; 
} 

配列値$hitsを数5弦Arrayではなく、配列の最初の項目の値として比較されて比較した場合。文字列Arrayは、常に5より大きい。

0

多かれ少なかれ。予想通り、この

fputs($fp , "$hits[0]"); 

が動作しません他の回答に加えて、あなたは"{$hits[0]}"または$hits[0](引用符なし)のいずれかをしたいです。

つまり、並行アクセスを気にしない場合です。