[英]Can't figure out what's wrong with this
我试着打电话: echo PrettyTime( time() - 70 * 60 )
,期待它会说1 hour ago
,但它却说70 minutes ago
,我似乎无法弄清楚为什么......我想它可能是一个我太笨而找不到的四舍五入问题,但这是我正在使用的代码:
function PrettyTime( $time )
{
$current = time();
if ( $time == $current )
return 'just now';
if ( $time == 0 )
return 'a long time ago';
$time = $current - $time;
$intervals = array
(
'year' => 29030400,
'month' => 2592000,
'week' => 604800,
'day' => 86400,
'hour' => 3600,
'minute' => 60,
'second' => 1
);
foreach( $intervals as $word => $interval )
{
$works = intval( $time / $interval );
$future = $works < 0;
if ( !$works )
continue; /* keep going through, silly! */
else
{
if ( !$future && $works == 1 )
{
switch( $word )
{
case 'year': return 'last year';
case 'month': return 'last month';
case 'week': return 'last week';
case 'day': return 'yesterday';
default: break;
}
}
else
break;
}
}
return abs($works) . ' ' . $word . ( $works ? 's' : '') . ($future ? ' in the future' : ' ago');
}
实际运行代码: - 这是break;
在default:
子句中。 你必须使用break 2;
在那里打破开关和foreach。
当您似乎想要时,您并不总是break
外部foreach
循环。 尝试删除最后的else
行并将缩进放在它下面的break
语句上。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.