以设置格式显示TIMEDIFF

时间:2011-10-19 16:41:48

标签: php mysql

$arr = explode(':', $row['diff']);
echo "$arr[0] minutes, $arr[1] seconds";

数组正在输出:Array00 hours, 20 minutes,应输出:[x] hours, [x] minutes。只要有> = 1小时

这是在SQL中:

TIMEDIFF(now(), listDT) as diff

如果输出是0小时22分钟,有没有显示,只需几分钟?为什么Array在前面?我可以删除它吗?怎么样?


更新

foreach($result as $row)
        { 

        echo "<div class='listing'>";
            print $row['uUName'] . '</strong><br />' .
            '<strong>' . $row['listTitle'] . '</strong><br />' .
            $arr = explode(':', $row['diff']);
            echo "{$arr[0]} minutes, {$arr[1]} seconds";
        echo "</div>";
        }

此STILL输出:Array00 hours, 31 minutes例如。如何让它看起来像:

00 hours, 31 minutes 

(理想情况下,如果小时为0)31 minutes

3 个答案:

答案 0 :(得分:0)

添加大括号,以便正确解释阵列变量。像这样:

echo "{$arr[0]} minutes, {$arr[1]} seconds"; 

ETA

省略等于零的部分意味着循环遍历数组并询问是否需要输出数组。

$map=array_combine(array('hours','minutes','seconds'),$arr);//so each part knows its name
$filtred=array_filter($map);//get rid of 0 values
foreach($filtred as $name=>$num){
  echo "$num $name ";
} 

答案 1 :(得分:0)

sscanf($row['diff'], '%i:%i:%i', $hour, $min, $sec);
echo "$hour hours, $min minutes, $sec seconds";

DOC
DEMO

答案 2 :(得分:0)

尝试echo "{$arr[0]} minutes, {$arr[1]} seconds";双引号内的数组需要围绕它们的花括号。