PHP

Склонение существительных на PHP. Год, месяц, день

В одном из проектов была задача вывести стаж пользователя. В настройках аккаунта указывается дата начала, а на странице профиля выводится стаж в формате 1 год 1 месяц 1 день. Для реализации такого функционала была написана функция, которая выбирает правильное склонение существительного(в данном случае это год, месяц и день) в зависимости от численного значения.

А вот и сама функция:
function ruDecline($n, $var1, $var2, $var3)
{
    $n = abs($n) % 100;
    $n1 = $n % 10;
    if ($n > 10 && $n < 20) return $var3;
    if ($n1 > 1 && $n1 < 5) return $var2;
    if ($n1 == 1) return $var1;
    return $var3;
}

Пример использования:
echo ruDecline(10,"год","года","лет"); // лет
echo ruDecline(2,"год","года","лет"); // года
echo ruDecline(31,"год","года","лет"); // год

Аналогично, можно подставить и другие величины, такие как месяц, день, минута, секунда и тд.

Для проверки корректности работы функции склонения русских существительных вызовем функцию ruDecline в цикле и посмотрим на результаты.
Итерация №1 - 1 год
Итерация №2 - 2 года
Итерация №3 - 3 года
Итерация №4 - 4 года
Итерация №5 - 5 лет
Итерация №6 - 6 лет
...
Итерация №9 - 9 лет
Итерация №10 - 10 лет
Итерация №11 - 11 лет
Итерация №12 - 12 лет
...
Итерация №21 - 21 год
Итерация №22 - 22 года
...
Итерация №41 - 41 год
Итерация №42 - 42 года
Итерация №43 - 43 года
Итерация №44 - 44 года
Итерация №45 - 45 лет

Из эксперимента видно, что функция работает корректно.
Добавлено: 24 Августа 2013 12:54:00 Добавил: Андрей Ковальчук Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...