Сколнение "год,года,лет"

HooLIGUN

MatchMaking CS:S / RGMIX.ru
Сообщения
1,069
Реакции
269
Здравствуйте.
Ув.программисты,подскжаите пожалуйста примерный php код для склонения слонения слов "год,года,лет"
Например:
Если 18, то вывести "Лет"
Если 23, то "Года"
Если 31, то вывести "Год"

Спасибо
P.S. Просто на сайте в профилях пользователей нет такого сколнения,хотелось бы поправить такую небольшую ошибку
 
Последнее редактирование:

HooLIGUN

MatchMaking CS:S / RGMIX.ru
Сообщения
1,069
Реакции
269
Решил,кому интересно:
PHP:
$n=10; // Возраст
$n = $n % 100;
$n1 = $n % 10;
if ($n > 10 && $n < 20) $word = "лет";
else{
if ($n1 > 1 && $n1 < 5) $word = "года";
else{
if ($n1 == 1) $word = "год";
else $word = "лет";
}
}
 
Последнее редактирование:

Vaio

Участник
Сообщения
625
Реакции
215
PHP:
$n=11; // количество лет

$k = $n % 10;
if($k == 1)
   $word = "год";
elseif($k >=2 && $k <=4)
   $word = "года";
else
   $word = "лет";

echo $n.' '.$word;

//11 год

Отличное решение!

Неужели так трудно пройти по готовому поисковому запросу (в моем посте выше), кликнуть по 1 результату и использовать готовую, правильную функцию?
Ты на создание этой темы и написанию этого кода потратил большое количество времени, которое гугл мог тебе сэкономить. :(
 

HooLIGUN

MatchMaking CS:S / RGMIX.ru
Сообщения
1,069
Реакции
269
PHP:
$n=11; // количество лет

$k = $n % 10;
if($k == 1)
   $word = "год";
elseif($k >=2 && $k <=4)
   $word = "года";
else
   $word = "лет";

echo $n.' '.$word;

//11 год

Отличное решение!

Неужели так трудно пройти по готовому поисковому запросу (в моем посте выше), кликнуть по 1 результату и использовать готовую, правильную функцию?
Ты на создание этой темы и написанию этого кода потратил большое количество времени, которое гугл мог тебе сэкономить. :(
К сожалению,мне не подходили варианты из гугла.Прежде чем что то спросить, я всегда пользуюсь поиском, а если это безрезультатно, или что то не получается , я обращаюсь за помощью на форумы.
 

semjef

semjef.ru
Сообщения
993
Реакции
444
HooLIGUN, как я понял тут нет обработки чисел более 100
а для 11,12,13,14 просто добавь исключение.
 

Vaio

Участник
Сообщения
625
Реакции
215
К сожалению,мне не подходили варианты из гугла.Прежде чем что то спросить, я всегда пользуюсь поиском, а если это безрезультатно, или что то не получается , я обращаюсь за помощью на форумы.
1 результат из поисковика:

PHP:
Function GetWordForm($n, $forms)
{
    if ($n>0)
    {
        $n = abs($n) % 100;
        $n1 = $n % 10;
        if ($n > 10 && $n < 20) return $forms[2];
        if ($n1 > 1 && $n1 < 5) return $forms[1];
        if ($n1 == 1) return $forms[0];
    }
    return $forms[2];
}

и напишу пример использования

PHP:
$n      = 11;
$forms  = ['год', 'года', 'лет'];

echo $n . ' ' .  GetWordForm($n, $forms);

Чем они не подходили?
 

HooLIGUN

MatchMaking CS:S / RGMIX.ru
Сообщения
1,069
Реакции
269
1 результат из поисковика:

PHP:
Function GetWordForm($n, $forms)
{
    if ($n>0)
    {
        $n = abs($n) % 100;
        $n1 = $n % 10;
        if ($n > 10 && $n < 20) return $forms[2];
        if ($n1 > 1 && $n1 < 5) return $forms[1];
        if ($n1 == 1) return $forms[0];
    }
    return $forms[2];
}

и напишу пример использования

PHP:
$n      = 11;
$forms  = ['год', 'года', 'лет'];

echo $n . ' ' .  GetWordForm($n, $forms);

Чем они не подходили?

Тем,что в движке IPB нельзя вывести echo.
Нужно выводить по другому,например
PHP:
[ php]
$var = тест; 
[/ php]
{$var}
Выведет "тест" , там, где будет вставленно {$var}

Заменить echo в вашем примере для меня трудно (я не особо разбираюсь в php, только малые основы) , по этому мне и не подошел этот код.
 
Сверху Снизу