【问题标题】:My foreach statement won't work in the switch statement我的 foreach 语句在 switch 语句中不起作用
【发布时间】:2012-11-19 02:52:05
【问题描述】:

这个函数让我困惑了一段时间,我只是无法让 foreach 语句工作,这两种情况都工作,因为它会显示单词 TodayYesterdayyear, monthday 不会出现。

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


【解决方案1】:

在现在的函数中,$d 将始终为零,因为未定义 $etime

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-19
    相关资源
    最近更新 更多