Довольно часто, в интернет магазинах, сайтах каталогах и других сайтах где есть выводятся товары, нужно вывести количество товара и рядом добавить наименование в нужном склонении.
например:

  • 1 картина, 2 картины, 0 картин.
  • 1 товар, 2 товара, 10 товаров
  • 1 литр, 2 литра, 10 литров

Функция php для склонения слов после числительных

function num_label($value, $words, $show = true) 
{ 
$num = $value % 100; 
if ($num > 19) { $num = $num % 10; } 
$out = ($show) ? $value . ' ' : ''; 
switch ($num) { 
case 1: $out .= $words[0];
break;
case 2: 
case 3: 
case 4: $out .= $words[1]; break; default: $out .= $words[2]; break; }
 return $out; } 

где

  • $value — числовое значение
  • $words — массив вариантов, например: array(‘товар’, ‘товара’, ‘товаров’)
  • $show — включает значение $value в результирующею строку

Параметр $words – массив, в котором:

  • первый элемент задает текст для единичных значений,
  • второй для значений с 2-х до 4-х,
  • третий для всех остальных.

Работает все очень просто, в функцию передаем число и массив возможных вариантов.

echo num_word(1, array('доллар', 'доллара', 'долларов'));
echo num_word(3, array('доллар', 'доллара', 'долларов'));
echo num_word(9, array('доллар', 'доллара', 'долларов'));