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

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

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

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

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, 'голос', 'голоса', 'голосов');

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

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

WordPress Digest Мой канал в Телеграм, посвящённый WordPress

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

<?php
function plural_form($n, $forms) {
  return $n%10==1&&$n%100!=11?$forms[0]:($n%10>=2&&$n%10<=4&&$n%100=20)?$forms[1]:$forms[2]);
}
?>
Кобзарёв Михаил

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

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

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

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

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

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

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

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

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

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