从PHP中的数组计算总时间

时间:2018-10-08 11:02:33

标签: php arrays time sum

这是我的数组输出看起来像这样

    Array ( [0] => 02:50:19 )  
    Array ( [0] => 00:00:00 )  
    Array ( [0] => 00:01:06 )  
    Array ( [0] => 00:55:06 )  
    Array ( [0] => 01:29:40 )  
    Array ( [0] => 00:00:00 )  
    Array ( [0] => 07:01:32 )  
    Array ( [0] => 00:00:00 )

现在如何从该数组计算总时间。?

  $x = null;
  $sum = strtotime('00:00:00');
   foreach($total as $t){
    $date = new DateTime($t);
     if($x == ''){
       $diff = $date->diff($date2);
       echo "difference " . $interval->h . " hour, " . $interval->i." minutes, ".$interval->s." second";
       $sum1=strtotime($diff->h.':'.$diff->i.':'.$diff->s)-$sum;
       $sum2 = $sum2+$sum1;
       echo "<br />";
      }
      $date2 = $date;

    $x = 1;
    }
    $sum3=$sum+$sum2;

    echo date("H:i:s",$sum3);

我从堆栈溢出答案中尝试了此代码,此处为链接Calculate total hours from Array - php
但没有任何结果。

2 个答案:

答案 0 :(得分:5)

尝试此代码,仅添加timimgs数组,然后添加到今天的时间

<?php
$total = array('01:00:00','02:20:00','04:00','05:10');
$sum = strtotime('00:00:00');
$sum2=0;  
foreach ($total as $v){

   $sum1=strtotime($v)-$sum;
   $sum2 = $sum2+$sum1;
}

$sum3=$sum+$sum2;

echo date("H:i:s",$sum3);

DEMO

答案 1 :(得分:1)

您可以像这样计算总秒数:

$total = 0;
foreach ($array as $time) {

    $temp = explode(':', $time);
    $total += intval($temp[2]); // Add the seconds
    $total += intval($temp[1]) * 60; // Add the minutes
    $total += intval($temp[0]) * 60 * 60; // Add the hours
}

然后您可以像这样回显总数:

echo gmdate("H:i:s", $total);