Дата публикации
9 Июля 2019
Дата изменения
24 Сентября 2019
Уникальных просмотров
904

Оглавление

При выводе некоторых значений, мне потребовалась функция склонения как русских, так и английских существительных слов. Прекрасное решение я нашел на форуме Дмитрия Котерова.

Функция склонения

/**
 * Функция склонения слов
 *
 * @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,1273 s
Время запросов: 0,1273 s
Количество запросов: 25
Источник: cache