Отправить заявку

Функция склонения слов на 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] ];  
}
Другие публикации