2011-12-28 6 views
-4

У меня есть такой массив. Мне нужно добавить общую длину во всех встречах массива. поэтому в приведенном ниже примере будет 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 
    ) 
    ) 

как я могу добавить длину в приведенном выше массиве, так что это все еще раз и добавляет как раз.

благодаря

+0

Что вы пробовали? Это должно быть простым вопросом разбора и преобразования в секунды, а затем форматирования. – jprofitt

ответ

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

0
  1. Чтобы найти sum of seconds итерацию через массив и вычислить total seconds от времени для каждой записи, т.е. 3600 * час + 60 мин * + с.
  2. Преобразование sum of seconds для представления времени:
sumSecs = ... 
hour = sumSecs/3600 
min = (sumSecs mod 3600)/60 
sec = sumSecs mod 60 
Смежные вопросы