обновление метода склонения слов

This commit is contained in:
2026-03-19 15:18:54 +05:00
parent 3e27486758
commit 73f4ccb516

View File

@@ -861,15 +861,37 @@ function prepare_fname($st)
return $value . $ago;
}
/*
* Функция склонения слов в зависимости от числа.
* * Пример использования:
* echo date_phrase(5, ['событие', 'события', 'событий']);
* // Вернет: "событий"
* * Индексы в массиве $titles:
* 0 - для чисел заканчивающихся на 1 (кроме 11)
* 1 - для чисел заканчивающихся на 2, 3, 4 (кроме 12, 13, 14)
* 2 - для чисел от 5 до 19 и остальных случаев
*/
function date_phrase($number, $titles)
{
$cases = array( 2, 0, 1, 1, 1, 2 );
function date_phrase($number, $titles)
{
// Принудительно приводим к числу (пустая строка станет 0)
$number = (int)$number;
// Проверяем, что $titles — это массив и он не пуст
if (empty($titles) || !is_array($titles)) {
return '';
}
return $titles[($number % 100 > 4 && $number % 100 < 20)
? 2
: $cases[min($number % 10, 5)]];
}
$cases = array( 2, 0, 1, 1, 1, 2 );
// Определяем индекс
$index = ($number % 100 > 4 && $number % 100 < 20)
? 2
: $cases[min($number % 10, 5)];
// Возвращаем результат, проверяя наличие ключа
return $titles[$index] ?? ($titles[0] ?? '');
}
/**