【发布时间】:2012-11-19 02:52:05
【问题描述】:
这个函数让我困惑了一段时间,我只是无法让 foreach 语句工作,这两种情况都工作,因为它会显示单词 Today 和 Yesterday 但 year, month 和 day 不会出现。
function time_decider($timestamp){
$date = date('m/d/Y', $timestamp);
$dif_date = date('m/d/Y',time() - (24 * 60 * 60));
$a = array( 12 * 30 * 24 * 60 * 60 => 'year',
30 * 24 * 60 * 60 => 'month',
24 * 60 * 60 => 'day',
);
switch ($date) {
case date('m/d/Y'):
return "Today";
break;
case $dif_date:
return "Yesterday";
break;
default:
foreach ($a as $secs => $str) {
$d = $etime / $secs;
if ($d >= 1) {
$r = round($d);
return $r . ' ' . $str . ($r > 1 ? 's ago' : '');
break;
}
}
}
}
【问题讨论】:
-
您是否尝试用括号括起计算? (12*30*24*60*60)
-
您期待什么样的输出?并且由于 $d 始终为零,因此您将永远不会像现在这样从函数中收到任何值
-
-
我太傻了,
$etime应该是刚刚解决问题的$timestamp。
标签: php function foreach switch-statement