Склонение существительных по числовому признаку
Сниппет которым можно делать удобные склонение существительных по числовому признаку
Дата публикации
9 Июля 2019
Дата изменения
24 Сентября 2019
Уникальных просмотров
1.017
Оглавление
При выводе некоторых значений, мне потребовалась функция склонения как русских, так и английских существительных слов. Прекрасное решение я нашел на форуме Дмитрия Котерова.
Функция склонения
/**
* Функция склонения слов
*
* @param mixed $digit
* @param mixed $expr
* @param bool $onlyword
* @return
*/
function declension($digit, $expr, $onlyword = false)
{
if (!is_array($expr)) $expr = array_filter(explode(' ', $expr));
if (empty($expr[2])) $expr[2] = $expr[1];
$i = preg_replace('/[^0-9]+/s', '', $digit) % 100;
if ($onlyword) $digit = '';
if ($i >= 5 && $i <= 20) $res = $digit . ' ' . $expr[2];
else {
$i %= 10;
if ($i <= 0) {
return false;
} elseif ($i == 1) {
$res = $digit . ' ' . $expr[0];
} elseif ($i >= 2 && $i <= 4) {
$res = $digit . ' ' . $expr[1];
} else
$res = $digit . ' ' . $expr[2];
}
return trim($res);
}
Применение для русских слов
Применить данную функцию для русских слов можно так:
$comments = 15;
return declension($comments, 'Опубликован Опубликовано', true). ' '. declension($comments, 'комментарий комментария комментариев');
На выходе получим:
Опубликовано 15 комментариев
Применение для английских слов
Применить данную функцию для английских слов можно так:
$comments = 15;
return declension($comments, 'Published Posted', true). ' '. declension($comments, 'comment comments');
На выходе получим:
Posted 15 comments
Время работы: 0,1374 s
Время запросов: 0,1374 s
Количество запросов: 25
Источник: cache
Время запросов: 0,1374 s
Количество запросов: 25
Источник: cache