2011-12-15 2 views
1

히트 카운터가 특정 숫자 (이 경우 5)에 도달하면 히트 카운터가 더 이상 표시되지 않습니다. 내 코드 :간단한 PHP hit counter/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] (따옴표) 중 하나를합니다.

즉, 동시 액세스에 신경 쓰지 않는다면 말입니다.