Довольно часто, в интернет магазинах, сайтах каталогах и других сайтах где есть выводятся товары, нужно вывести количество товара и рядом добавить наименование в нужном склонении.
например:
- 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('доллар', 'доллара', 'долларов'));