<?php
function totalHoras(array $horasArray){

	foreach($horasArray as $hours){
		if(preg_match("@(\d{2}):(\d{2}):(\d{2})@", $hours, $matches)){
			$segundos[] = $matches[3];
			$minutos[] = $matches[2];
			$horas[] = $matches[1];
		} else {
			echo "Erro: Formato da hora está incorreto! {$hours}<br />\n";
		}
	}

	//Calculando os segundos
	$secP = array_sum($segundos);
	if($secP >= 60){
		$secT = floor($secP / 60);
		$segTotal = ($secP - (60 * $secT));
	} else {
		$segTotal = $secP;
		$secT = $secP;
	}

	//Calculando os minutos
	$minP = array_sum($minutos);
	$minP += $secT;
	if($minP >= 60){
		$minT = floor($minP / 60);
		$minTotal = ($minP - (60 * $minT));
	} else {
		$minTotal = $minP;
		$minT = $minP;
	}

	$horP = array_sum($horas);
	$horTotal = $horP + $minT;

	return (str_pad($horTotal, 2, 0, STR_PAD_LEFT)
		 . ':' . 
		str_pad($minTotal, 2, 0, STR_PAD_LEFT)
		 . ':' . 
		str_pad($segTotal, 2, 0, STR_PAD_LEFT)
	);

}//Fim function

$array = array('04:12:00', '08:44:00', '12:03:00', '01:09:00');

echo totalHoras($array);
?>