Главная > Заметки, Статьи > Склонение чисел

Склонение чисел

Вот небольшая но очень мощная функция для склонения слов-чисел, в нашем случае — выставление правильных окончаний у существительных относящихся к числительному

Фуцнкция:

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 компания

Заметки, Статьи ,

  1. 12 Март 2009 из 11:42 | #1

    Небольшая заметка: что бы определить где какое окончание должно быть, просто подставляйте вместо $a любое значение:

    1 — компания

    2 — компании

    156 — компаний

  2. Pashkin
    06 Апр 2009 из 10:49 | #2

    У меня немного другой вариант :)

    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;

    }

  3. 06 Апр 2009 из 14:57 | #3

    можно и так :) тока я думаю что производительность в моем коде выше, но надо проверить, т.к. регулярки могут процессорное время кушать :) для теста:

    $st = array_sum(explode(' ',microtime()));

    код

    $et = array_sum(explode(' ',microtime()));

    echo $et-$st;

    и посмотреть сколько миллисекунд будет выполнятся мой или твой код :)

    интересно на самом деле. я щас занимаюсь оптимизациями запросов и кода на сайте 66.ru

  4. 12 Авг 2009 из 20:57 | #4

    Я поменял «я» на «ю» и меня это полностью устроило. Даже мозг напрягать не надо ;)

  1. Трекбеков пока нет.