如何总结阵列时间

时间:2011-12-28 01:00:56

标签: php cakephp-1.3 php-5.3

我有这样的数组。我需要在数组的所有出现中添加总时间长度。所以在下面的例子中它将是00:04:03 + 00:06:03 = 00:10:06

Array
(
  [4894] => Array
  (
    [0] => Array
    (
      [Informative] => Array
      (
        [id] => 109
      )     
      [jQuery] => Array
      (
        [length] => 00:04:03
        [alignment] => 8
      )
    )
    [1] => Array
    (
      [Informative] => Array
      (
        [id] => 110
      )     
      [jQuery] => Array
      (
        [length] => 00:06:03
        [alignment] => 8
      )
    )

如何在上面的数组中添加长度,以便它仍然是一个时间并添加为时间。

感谢

2 个答案:

答案 0 :(得分:2)

$totalTimeSecs = 0;
foreach ($array as $l1) { // Loop outer array
  foreach ($l1 as $l2) { // Loop inner arrays
    if (isset($l2['jQuery']['length'])) { // Check this item has a length
      list($hours,$mins,$secs) = explode(':',$l2['jQuery']['length']); // Split into H:m:s
      $totalTimeSecs += (int) ltrim($secs,'0'); // Add seconds to total
      $totalTimeSecs += ((int) ltrim($mins,'0')) * 60; // Add minutes to total
      $totalTimeSecs += ((int) ltrim($hours,'0')) * 3600; // Add hours to total
    }
  }
}
echo "Total seconds: $totalTimeSecs<br />\n";

$hours = str_pad(floor($totalTimeSecs / 3600),2,'0',STR_PAD_LEFT);
$mins = str_pad(floor(($totalTimeSecs % 3600) / 60),2,'0',STR_PAD_LEFT);
$secs = str_pad($totalTimeSecs % 60,2,'0',STR_PAD_LEFT);
echo "Total time string: $hours:$mins:$secs";

See it working

答案 1 :(得分:0)

  1. 要查找sum of seconds,请遍历您的数组并从每个条目的时间计算total seconds,即3600 *小时+ 60 * min + sec。
  2. sum of seconds转换为时间表示:
  3. sumSecs = ...
    hour = sumSecs / 3600
    min = (sumSecs mod 3600) / 60
    sec = sumSecs mod 60