2011-03-31 5 views
0

나는 내 웹 사이트에 올려야 할 PHP 카운트 다운 시계를 가지고 있지만 일부 오류를 디버그하는 데 어려움을 겪고있다. 시계에 1 분이 표시되면 "1 분"(분을주의 깊게)이라고 표시되고 "0 분"도 표시됩니다. 나는 아래 코드를 게시했다.PHP 카운트 다운 시계 오류

<?php 

countdown(2011,6,7,7,31,0); 

function countdown($year, $month, $day, $hour, $minute){ 
$the_countdown_date=mktime($hour, $minute, 0, $month, $day, $year, -1); 
$today=time(); 
$difference=$the_countdown_date - $today; 
$days=floor($difference/60/60/24); 
$hours=floor(($difference - $days*60*60*24)/60/60); 
$minutes=floor(($difference - $days*60*60*24 - $hours*60*60)/60); 
echo "$days days $hours hours $minutes minutes"; 
} 

?> 

'1 분'이라고 말하고 '0 분'의 분 섹션을 표시하지 않을 수있는 방법이 있습니까?

사람들이이를 이해할 수 있기를 바랍니다. (상단) 미리 감사

캘럼

+0

영어 올바른 사용법 0 분 단지 FYI 0이 아닌 분 IS – rayman86

+0

rayman 나는 당신이 뭔가를 잘못 이해했다고 생각하거나 다른 말로는 더 재미있는 것이 없다고 생각합니다 ^^ – n00b

+0

댓글은 원래 삭제 된 게시물 용이었습니다. 그래서 나는 그 사람이 볼 수 있도록 여기에 올려 놓았습니다. – rayman86

답변

1

중 "S"또는 ""해당 날짜/시간/분의 값에 의존하는 변수 생성 :

$days_s = $days == 1 ? "" : "s"; 
$hours_s = $hours == 1 ? "" : "s"; 
$minutes_s = $minutes == 1 ? "" : "s"; 
return "$days day$days_s $hours hour$hours_s $minutes minute$minutes_s"; 
0

추가

function nicefmt($n,$s,$trail=" "){ 
if($n==0) return ""; 
if($n==1) return "$n $s".$trail; 
return "$n ".$s."s".$trail; 
} 

와 교체

echo nicefmt($days,"day").nicefmt($hours,"hour").nicefmt($minutes,"minute",""); 
0

echo "$days days $hours hours $minutes minutes"; 

그냥 if 문을 넣어 섹션으로 나는 것 최종 문자열,

if ($minutes == 1) { 
    echo "$days days $hours hours $minutes minute"; 
} else if ($minutes == 0) { 
    echo "$days days $hours hours"; 
} else { 
    echo "$days days $hours hours $minutes minutes"; 
} 

나는 그것을 줄이기 위해 ...이 매우 장황 알고에만 필요합니다 섹션을 인쇄 : 점에서 같은 것입니다.

+1

'$ days == 0 && $ hours == 0' 왜? – n00b

+1

0 일, 0 시간, 1 분이있을 때만 최상위 조건 (예 :)이 실행되기 때문에'! ='not'=='을 의미한다고 생각합니다. – Christian

+0

예, 방금 편집했습니다. 질문을 잘못 읽으십시오. – Tony