Реализаций данного функционала в интернете гигантская масса. Но все настолько громоздки, что программистам, которые их писали хочется предложить пройти курс изучения языка заново :)
В других языках, например английский, все значительно проще если товар один, то «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] ];
}