Функция подставляет правильные окончания к словам.

                        
function ru_word($number, $votes = array('часов', 'час', 'часа')) 
{
$numberLast = intval(substr(strval($number),-1,1));
$numberPreLast = intval(substr(strval($number),-2,2));

if(($numberLast == 0) or ((5<=$numberLast) and ($numberLast<=9)) or((11<=$numberPreLast) and ($numberPreLast<=19)))
{
$type=0;
}
elseif(($numberLast==1) and ($numberPreLast!=11))
{
$type=1;
}
elseif((2<=$numberLast) and ($numberLast<=4))
{
$type=2;
}
return $number.' '.$votes[$type];
}
2 10 0
0

Нет фото
• 24 июл 2013, 22:33


Зачем столько кода?
Вот так было бы проще, причем не только часы)))

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] . \' \';
}