Склонение чисел
03 марта 2009
Вот небольшая но очень мощная функция для склонения слов-чисел, в нашем случае — выставление правильных окончаний у существительных относящихся к числительному
Фуцнкция:
function numberEnd($number, $titles) { $cases = array (2, 0, 1, 1, 1, 2); return $titles[ ($number%100>4 && $number%100<20)? 2 : $cases[min($number%10, 5)] ]; }
Использование:
$a = 141; echo $a.' компани'.numberEnd($a, array('я','и','й'));
выведет
141 компания
Небольшая заметка: что бы определить где какое окончание должно быть, просто подставляйте вместо $a любое значение:
1 — компания
2 — компании
156 — компаний
У меня немного другой вариант
function numAddStr ($num, $n109_056789, $n1, $n234) {
if (eregi («1[0-9]$», $num)) return $n109_056789;
if (eregi («[1]$», $num)) return $n1;
if (eregi («[234]$», $num)) return $n234;
if (eregi («[056789]$», $num)) return $n109_056789;
}
можно и так
тока я думаю что производительность в моем коде выше, но надо проверить, т.к. регулярки могут процессорное время кушать
для теста:
$st = array_sum(explode(' ',microtime()));
код
$et = array_sum(explode(' ',microtime()));
echo $et-$st;
и посмотреть сколько миллисекунд будет выполнятся мой или твой код
интересно на самом деле. я щас занимаюсь оптимизациями запросов и кода на сайте 66.ru
Я поменял «я» на «ю» и меня это полностью устроило. Даже мозг напрягать не надо