繁体   English   中英

无法弄清楚这有什么问题

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM