Внешний вид сайта:

Функции склонения числительных на PHP и JavaScript

Довольно часто при написании скриптов приходится иметь дело со склонением слов в русском языке. Например, когда необходимо вывести надпись сколько раз скачали файл или просмотрели страницу — 1 раз или 4 раза. А когда дело доходит до выяснения сколько же все-таки пирожков купил Вася — 1 пирожок, 2 пирожка или 5 пирожков то становится совсем худо. Однако данная проблема на самом деле решается довольно просто.

Вот, пожалуй, самая лаконичная и удобная функция склонения целых числительных:

PHP Вариант:

/** 
 * Функция склонения числительных в русском языке 
 * 
 * @param int      $number  Число которое нужно просклонять 
 * @param array  $titles      Массив слов для склонения 
 * @return string
 **/
function declOfNum($number, $titles)
{
    $cases = array (2, 0, 1, 1, 1, 2);
    return $number." ".$titles[ ($number%100 > 4 && $number %100 < 20) ? 2 : $cases[min($number%10, 5)] ];
}

Пример использования:

echo 'Я купил '.declOfNum(5, array('пирожок', 'пирожка', 'пирожков'));

 

Ее вариант для применения в Javascript:

function declOfNum(number, titles)
{
    cases = [2, 0, 1, 1, 1, 2];
    return titles[ (number%100>4 && number%100<20)? 2 : cases[(number%10<5)?number%10:5] ];
}

Пример использования:

$('#mess').html(declOfNum(foundedCount, ['Найдена ', 'Найдено ', 'Найдено ']) + foundedCount + declOfNum(foundedCount, [' модель', ' модели', ' моделей']);

 

1 комментарий

13:41
Отличная статья, все очень доходчиво и познавательно. А ведь на эту тему столько «костылей» придумано, что даже не поверил с первого взгляда, что этот вопрос можно решить столь лаконично.