обновление метода склонения слов
This commit is contained in:
@@ -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] ?? '');
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user