Склонение существительных (изменение их формы) зависит от того, какое число стоит перед ними. То есть, как будет изменяться слово (например, “яблоко”), зависит от цифры, которая идет перед ним (например, “одно яблоко”, “два яблока”, “пять яблок”).
например:
- 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('доллар', 'доллара', 'долларов'));