Функция склонения слов на PHP или JavaScript.


Реализаций данного функционала в интернете гигантская масса. Но все настолько громоздки, что программистам, которые их писали хочется предложить пройти курс изучения языка заново :)

В других языках, например английский, все значительно проще если товар один, то «product», а если не один, то «products».
А вот в русском или украинском есть три формы множественного числа и слово постоянно склоняется в зависимости от чисел.

/*
 * $number (intval) число, от которого будет зависеть форма нужного слова;
 * $word (array) массив склоняемого слова в трех вариантах
 */
function declension_word($number, $word) {
	$ar= array (2, 0, 1, 1, 1, 2);
	return $word[ ($number%100 > 4 && $number%100 < 20) ? 2 : $ar[min($number%10, 5)] ];
}

Как использовать функцию склонения:

$summa = 6;
echo $summa .' '.declension_word($summa , array('товар', 'товара', 'товаров'));
// выведет 6 товаров;

$summa = 2;
echo $summa .' '.declension_word($summa , array('товар', 'товара', 'товаров'));
// выведет 2 товара;	

$summa = 21;
echo $summa .' '.declension_word($summa , array('товар', 'товара', 'товаров'));
// выведет 21 товар;

Если кому-то необходима аналогичная функция на языке JavaScript – этот скрипт выглядит аналогично только немного исправить синтаксис.

var declension_word= function(number,word){
	ar= [2, 0, 1, 1, 1, 2];
	return word[ (number%100>4 && number%100<20)? 2 : ar[(number%10<5)?number%10:5] ];
}
Возврат % от покупок

Другие публикации:

Написать комментарий через:

 
               
  • Локальный блог
  •  
 

Ваш отзыв

Имя *

Почта (скрыта) *

Сайт

Напишите цифрами двa вoceмь двa *

Сообщение

 
Статусы для соц.сетей на ArtKiev Design Studio