Search code examples
phpcakephp-1.3php-5.3

how to sum the array time


I have an array like this. I need to add the total length of time in all the occurances of the array. so in the example below it will be 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
      )
    )

how can I add length in the above array so that it still is a time and adds as time.

thanks


Solution

  • $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