2011-03-31 83 views
0

我有一个PHP倒计时时钟,我将被放在我的网站上,但我正在努力调试一些错误。当时钟显示1分钟时,仍然显示“1分钟”(注意S在几分钟内),同时显示“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分钟,不为0分,只是FYI – rayman86 2011-03-31 22:13:25

+0

rayman我认为你误解了一些东西,或者没有什么更有意思的说^^ – n00b 2011-03-31 22:19:06

+0

没有评论本来是打算删除的帖子,所以我把它放在这里,让那个人看到。 – rayman86 2011-04-01 02:18:33

回答

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 "$days days $hours hours $minutes minutes"; 

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

只要把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 2011-03-31 22:04:30

+1

我想你的意思是'!='不是'==',因为最上面的条件(例如)只有在0天,0小时和1分钟时才会执行。 – Christian 2011-03-31 22:06:09

+0

是的,我只是编辑它!阅读错误的问题。 – Tony 2011-03-31 22:06:18