不知道这是什么问题
问题描述:
我试过调用: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');
}
答
实际运行的代码: - 它是default:
子句中的break;
。那里必须使用break 2;
来突破交换机和的foreach。
答
你并不总是break
当你似乎想要的外面foreach
循环。尝试删除最后的else
行并在其下的break
声明中删除缩进。
这很了解。我不知道PHP有这样一种机制来打破2,打破两件事情。 – robx 2011-05-05 01:58:56