Узнать разрешение вашего экрана и IP адрес   •   Online-инструменты
105 просм
0 комм
Поделиться:

Простое склонение числительных на PHP/JavaScript

Рад поделиться с читателями нашего сайта двумя полезными функциями (по одной на каждый из описанных в заголовке языков программирования). Все дело в том, что на многих сайтах я вижу картину, похожую на эту: 5 комментария, в вашей корзине 31 яблок и т.д. Все это с точки зрения орфографии является неверным представлением информации, и если вы все же ведете в какой-то степени серьезный проект – этому нужно уделить внимание.

Для этого я покажу вам две, по сути, идентичные функции для PHP и JavaScript, которые позволят правильно склонять слова в зависимости от сопутствующих им числовых значений.

Простое склонение числительных на PHP

Чтобы не быть многословным, функция для PHP выглядит так:

function declination($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)]];
	
}

Ее рекомендуется вставить в верхнюю часть вашего файла PHP. А это ее пример использования:

$title = declOfNum(100, array("человек", "человека", "человек"));

echo $title;

В коде выше 100 – это наше число (можно указать вручную или заменить переменной), а array("человек", "человека", "человек") – массив со склоняемыми словами.

Теперь поговорим о логике составления этих массивов. Нам необходимо подставить слова по такому принципу: на первом месте – для единицы, на втором – для пары, на третьем – для пяти.

Простое склонение числительный на JavaScript

В JavaScript функция будет похожей:

function declination(number, titles) {

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

Функцию надо вставлять выше ее вызова. Пример ее использования:

var title = declination(100, ["человек", "человека", "человек"]);

alert(title);

100 здесь все то же наше число, а ["человек", "человека", "человек"] – массив со склонениями, который вы составляете по тому же самому принципу, что и в примере с PHP.

0
комментарий
Оставить комментарий:
Нажимая кнопку «Отправить» вы даете согласие на обработку своих персональных данных.
Имя и фамилия
E-mail
Текст комментария