Выбираем окончания для существительных с количественным числительным

В русском языке существительные с количественным числительными могут быть в единственном, двойственном и множественном числе: один голос, два голоса, пять голосов (двойственное число — это почти исчезнувшая в русском языке грамматическая конструкция).

Я привык называть эти три формы следующим образом: «форма единицы», «форма двойки», «форма пятёрки».

Чтобы правильно просклонять существительное с количественным числительным, я наваял нечто подобное

function endingsForm($n, $form1, $form2, $form5) {
	$n = abs($n) % 100;
	$n1 = $n % 10;
	if ($n > 10 && $n < 20) return $form5;
	if ($n1 > 1 && $n1 < 5) return $form2;
	if ($n1 == 1) return $form1;
	return $form5;
}
 
// пример
echo 'Статья оценена в  '.$n.' '.endingsForm($n, 'голос', 'голоса', 'голосов');

Чтобы просклонять существительные на других языках, воспользуйтесь данным материалом

Пошерить
Плюсануть
Отправить
Вотсапнуть

Добавить комментарий

Такой e-mail уже зарегистрирован. Воспользуйтесь формой входа или введите другой.

Вы ввели некорректные логин или пароль

Извините, для комментирования необходимо войти.

1. Нажимая на кнопку "Отправить", я даю согласие на обработку персональных данных.

2. Для вставки кода используйте специальные теги [code lang="php"]ваш код[/code]

4 комментария

сначала новые
по рейтингу сначала новые по хронологии

Более лаконичный вариант, переведенный из gettext на php:

</p>
<p>&lt;?php</p>
<p>function plural_form($n, $forms) {</p>
<p>  return $n%10==1&amp;&amp;$n%100!=11?$forms[0]:($n%10&gt;=2&amp;&amp;$n%10&lt;=4&amp;&amp;$n%100=20)?$forms[1]:$forms[2]);</p>
<p>}</p>
<p>?&gt;</p>
<p>

Автор
Кобзарёв Михаил

Так это абсолютно тоже самое, только записанное в одну строку )

слово "лаконичный" не говорит о том, что вариант должен быть другим

Автор
Кобзарёв Михаил

Согласен, но я за понятный код! Ваш код сложнее для понимания, хотя и короче:)