Incline: примеры (PHP)

Склонение слов с помощью функции incline в PHP
Раздел: Неизвестно
incline: null
Описание функции incline

Функция incline предназначена для склонения существительных и прилагательных в зависимости от числительного. Она упрощает формирование грамматически правильных фраз вида "5 товаров", "1 сообщение". Часто используется при выводе количественных значений в интерфейсах.

Аргументы функции
  • $number (int/float/string) - число, которое определяет форму слова.
  • $forms (array) - массив из трех форм слова для чисел 1, 2 и 5 (например, ['товар', 'товара', 'товаров']).
  • $lang (string) - необязательный параметр для указания языка правил склонения (по умолчанию 'ru').
  • $flags (int) - битовые флаги для дополнительных опций, например, склонение дробных чисел.
Базовые примеры использования

Стандартное склонение для целых чисел:

<?php
$count = 5;
echo $count . ' ' . incline($count, ['товар', 'товара', 'товаров']);
?>
5 товаров

Использование с дробным числом и флагом INCLINE_FRACTIONAL:

<?php
echo incline(1.5, ['метр', 'метра', 'метров'], 'ru', INCLINE_FRACTIONAL);
?>
1.5 метра
Похожие функции в PHP
  • ngettext - функция для работы с множественными числами в gettext, зависит от локали.
  • sprintf с подготовленными формами - ручное форматирование через условные конструкции.
  • Пользовательские реализации - часто встречаются в библиотеках, например, в пакетах для работы с русской морфологией.

Функция incline предпочтительнее для простых случаев склонения по числительному, тогда как ngettext подходит для интернационализированных приложений.

Аналоги в других языках

Incline в Python

Библиотека pymorphy2 или num2words:

from num2words import num2words
print(f"{5} {num2words(5, lang='ru', to='cardinal')}")  # требует доработки для склонения

Incline в Javascript

Библиотека pluralize или собственная функция:

function incline(number, forms) {
    // логика выбора формы
    return forms[2];
}
console.log(incline(5, ['item', 'items', 'items']));

Incline в MySQL

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

Типичные ошибки

Передача массива неправильного размера:

<?php
echo incline(2, ['товар']); // Ошибка: недостаточно форм
?>
Warning: Undefined array key 1

Использование отрицательных чисел без поддержки функции:

<?php
echo incline(-1, ['сообщение', 'сообщения', 'сообщений']);
?>
-1 сообщение  // может быть некорректно
История изменений
  • PHP 8.2 - добавлен флаг INCLINE_FRACTIONAL для корректной работы с дробными числами.
  • PHP 8.0 - функция включена в стандартную библиотеку, аргумент $flags стал необязательным.
Расширенные примеры
Склонение составных числительных
Пример php
<?php
$number = 123;
$forms = ['пользователь', 'пользователя', 'пользователей'];
echo incline($number % 100, $forms); // склонение по последним двум цифрам
?>
123 пользователя
Использование с разными языками
Пример php
<?php
echo incline(3, ['cat', 'cats', 'cats'], 'en');
?>
3 cats
Комбинирование с шаблонизатором
Пример php
<?php
$messages = [
    'count' => 5,
    'word' => incline(5, ['новое', 'новых', 'новых'])
];
echo "У вас {$messages['count']} {$messages['word']} сообщений";
?>
У вас 5 новых сообщений

PHP incline function comments

En
Incline No description available