<?php /** * Soma um vetor de horas * @param array[string] $tempos Vetor de horas no formato H:M:S * @return Total de horas no formato H:M:S */ function totalHoras(array $tempos) { $total_segundos = 0; foreach ($tempos as $tempo) { if (preg_match('/(\d{2}):(\d{2}):(\d{2})/', $tempo, $matches)) { $total_segundos += (int)$matches[1] * 3600 + (int)$matches[2] * 60 + (int)$matches[3]; } else { throw new InvalidArgumentException('Tempo no formato errado: '.$tempo, 1); } } $horas = floor($total_segundos / 3600); $total_segundos = $total_segundos % 3600; $minutos = floor($total_segundos / 60); $segundos = $total_segundos % 60; return sprintf('%02d:%02d:%02d', $horas, $minutos, $segundos); } $tempos = array('04:12:00', '08:44:00', '12:03:00', '01:09:00'); echo totalHoras($tempos);