Формируем правильное окончание числительного

Спасибо @demisang за сниппет.

/**
 * Формируем правильное окончание числительного
 *
 * @param integer $num   количество
 * @param string $str1   "один" комментарий
 * @param string $str2   "несколько" (2-4) комментария
 * @param string $str3   "много" комментариев
 * @param bool $num_text если TRUE, то перед числительным будет добавлено и само число
 *                       Например "1 день", если FALSE, то просто "день"
 *
 * @return string правильный вариант
 */
function WE($num, $str1, $str2, $str3, $num_text = true) {

    $val = $num % 100;
 
    if ($val > 10 && $val < 20) {
        return $num_text ? $num . ' ' . $str3 : $str3;
    } else {

        $val = $num % 10;

        if ($val == 1) {
            return $num_text ? $num . ' ' . $str1 : $str1;
        } elseif ($val > 1 && $val < 5) {
            return $num_text ? $num . ' ' . $str2 : $str2;
        } else {
            return $num_text ? $num . ' ' . $str3 : $str3;
        }

    }
}

Пример использования:

echo WE($num, 'день', 'дня', 'дней');

Оставьте комментарий!

Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий:


Написать новый комментарий

Видео

Самые полезные видео на темы "веб-разработка", "Linux" и "IT". Смотри и обучайся!

Подробнее »

Сделки

Самые горячие и выгодные сделки, акции и скидки на видео-курсы, софт, услуги, книги и железо из всего рунета.

Подробнее »

Планета

Наша планета собирает интересные статьи из различных источников и объединяет их в одну ленту. Которую можно читать на нашем сайте.

Подробнее »