Php 如何对数组数据使用函数

Php 如何对数组数据使用函数,php,arrays,function,Php,Arrays,Function,我有一个span标记,其中包含数组数据,如 现在是发表评论的时候了,时间是2014-04-11 05:07:52 现在我有一个函数,它以x小时前的格式显示时间 下面是函数 define("SECOND", 1); define("MINUTE", 60 * SECOND); define("HOUR", 60 * MINUTE); define("DAY", 24 * HOUR); define("MONTH", 30 * DAY); function relTime($time)

我有一个span标记,其中包含数组数据,如

现在是发表评论的时候了,时间是2014-04-11 05:07:52

现在我有一个函数,它以x小时前的格式显示时间

下面是函数

 define("SECOND", 1);
 define("MINUTE", 60 * SECOND);
 define("HOUR", 60 * MINUTE);
 define("DAY", 24 * HOUR);
 define("MONTH", 30 * DAY);
 function relTime($time)
 {   
$now       = new DateTime;
$dateObj   = new DateTime($dt);
$diff      = (array) $now->diff($dateObj);
$diff['w'] = floor($diff['d'] / 7);
$diff['d'] -= $diff['w'] * 7;

$tokens = array(
    'y' => 'year',
    'm' => 'month',
    'w' => 'week',
    'd' => 'day',
    'h' => 'hour',
    'i' => 'minute',
    's' => 'second'
);

foreach ($tokens as $unit => &$text)
{
    if ($diff[$unit])
    {
        $text = sprintf(
            '%s %s%s', 
            $diff[$unit], $text, ($diff[$unit] > 1 ? 's' : '')
        );
    }
    else
    {
        unset($tokens[$unit]);
    }
}

return array_shift($tokens);
 } 
现在,我如何调用该函数并以所需格式回显该时间


请帮帮我

有一个更好更干净的方法来实现这一点。这里有一个函数,给定一个日期/时间字符串和一个格式字符串,它将以所需的格式返回与现在的差异

function getDatetimeDifference($datetime, $format) {
    $datetime_obj = new DateTime($datetime);
    $now = new DateTime();
    $difference = date_diff($now, $datetime_obj);
    $result = $difference->format($format);
    return $result;
}
下面是一个用例:

echo getDatetimeDifference(
    '2013-04-11 10:35:33', 
    '%R%a days, %h hours, %i minutes, %s seconds ago'
);

// Outputs "-364 days, 23 hours, 55 minutes, 10 seconds ago"
如果你想计算自那以后的总小时数,那么如果你使用时间戳,你会得到更好的结果,因为你可以很容易地减去时间差,然后除以3600,得到以小时为单位的时间差

请记住,如果您不传递适当的格式,DateTime对象将溢出-例如,如果您使用上述函数仅获取从现在到去年的小时数,那么结果将是23小时。我的建议-使用类似的函数,传递一个合适的格式,稍后可以在标记中解析,并消除从左到右的标记,直到达到非负值


干杯。

var_dump(relTime($comments_array[$j]['posted_time'));要查看从函数中获得的数据…@Jonasm page在使用该函数后变为空白。