Зачем столько кода?
Вот так было бы проще, причем не только часы)))
function endofstr($s, $k) {
$v = intval($s);
$len = strlen($v);
$arr = array(
\'sec\' => array(\'секунд\', \'секунда\', \'секунды\'),
\'min\' => array(\'минут\', \'минута\', \'минуты\'),
\'hor\' => array(\'часов\', \'час\', \'часа\'),
\'day\' => array(\'дней\', \'день\', \'дня\'),
\'mon\' => array(\'месяцев\', \'месяц\', \'месяца\'),
\'year\' => array(\'лет\', \'год\', \'года\'));
$s = $len <= 2 ? intval($s) : substr($s, ($len - ($len - 2)));
$s = ($s > 14) ? substr($s, -1) : intval($s);
$s = ($s > 0 && $s < 3) ? intval($s) : ($s > 2 && $s < 5 ? 2 : 0);
return $v . \' \' . $arr[$k][$s] . \' \';
}