我有这个功能,当$time
= 0
function time_spended($time){
switch($time){
case $time > (60*60*24*365):
$time /= (60*60*24*365);
return number_format($time, 2, '.', ',') . " year" . ($time > 1 ? "s":"");
break;
case $time > 60*60*24:
$time /= 60*60*24;
return number_format($time, 2, '.', ',') . " day" . ($time > 1 ? "s":"");
break;
case $time > 60*60:
$time /= 60*60;
return number_format($time, 2, '.', ',') . " hour" . ($time > 1 ? "s":"");
break;
case $time > 60:
$time /= 60;
return number_format($time, 2, '.', ',') . " minute" . ($time > 1 ? "s":"");
break;
default:
return number_format($time, 2, '.', ',') . " seconds";
}
}
例如:
echo time_spended(0); // 0.00 year
而不是:
0.00秒
答案 0 :(得分:3)
函数返回0.00 year
(换句话说,来自第一个case
的结果),因为$time = 0
中的switch
计算为{{1当false
为$time > (60*60*24*365)
时,它返回第一个分支的结果, viz :
true
要使其有效,您应该使用[0 == true] => [false == true] => [false]
代替switch(true)
,它应该按照下面显示的方式工作:
switch($time)
答案 1 :(得分:0)
conversation.processUpTo(10);
中的条件应放在括号内。
switch
答案 2 :(得分:0)
您没有正确使用switch
声明。 switch
语句用于在多个值中进行选择。更合适/更明确的方法是使用elif
来实现逻辑:
function time_spended($time){
if($time > (60*60*24*365)) {
//...
} elseif ($time > 60*60*24) {
// ...
} elseif($time > 60*60) {
// ...
} elseif($time > 60) {
//...
} else {
return number_format($time, 2, '.', ',') . " seconds";
}
}
switch
的正确示例是:
switch($currentDayOfTheWeek){
case 'Monday': // ...
case 'Tuesday': // ...
case 'Wednesday: // ...
// and so on
default: // cause it's goo practice to have a default branch
}
修改:感谢Mike发表elif
评论:)