дней/день как реализовать подстановку

DmitryShustov
На сайте с 27.11.2004
Offline
259
598

Никто не сталкивался с задачей как реализовать подстановку слова к отсчету дней или день? поясню: 105 дней, 102 дня, 101 день и т.д.

Revan
На сайте с 09.09.2005
Offline
321
#1

Можно брать из таблицы...

1 день

2 дня

3 дня

...

37 дней

итд

С уважением, Прокофьев Александр, founder KudaGo.com (http://kudago.com). Отдаем информацию обо всех мероприятиях в РФ + Киев по API (/ru/forum/912869) всем желающим.
bondarev.pp.ru
На сайте с 29.09.2005
Offline
202
#2

DmitryShustov, вот моя функция для этих целей:


// Функция возвращает окончание, выбранное из заданных трех
// и подходящее для данного числа.
// В параметрах - массив из окончаний для чисел 1, 2, 5 и нужное число

function russian_plural_end($ends, $num) {
if (($num * 10) % 10) {
if ($num < 5) {
return $ends[1];
} else {
return $ends[2];
}
}
// 1, 21, 31, 41, ..., 101, 121, ...
if (($num % 10 == 1) && ($num / 10 % 10 != 1)) {
return $ends[0];
}
// 2, 3, 4, 22, 23, 24, 32, 33, 34, 42, 43, 44, ...
else if (($num / 10 % 10 != 1)&&(($num % 10 == 2) || ($num % 10 == 3) || ($num % 10 == 4))) {
return $ends[1];
}
// 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 25, 26, 27, 28, 29, 30, 35, 36, 37, 38, 39, 40, ...
else {
return $ends[2];
}
}

Вызывается примерно так:


echo $days . ' ' . russian_plural_end(array('день', 'дня', 'дней'), $days);

Массив в аргументе содержит словоформы для чисел 1, 2, 5

bondarevpipes.com (http://ru.bondarevpipes.com/)
eko
На сайте с 02.12.2005
Offline
30
eko
#3

если число заканчивается на 1, то подставляем день

если число заканчивается на 2-4, то подставляем дня

если число заканчивается на 5-9 и 0, то подставляем дней

bondarev.pp.ru, а че так сложно то ;)?

DmitryShustov
На сайте с 27.11.2004
Offline
259
#4

спасибочки бальшие

bondarev.pp.ru
На сайте с 29.09.2005
Offline
202
#5
eko:
если число заканчивается на 1, то подставляем день
если число заканчивается на 2-4, то подставляем дня
если число заканчивается на 5-9 и 0, то подставляем дней

bondarev.pp.ru, а че так сложно то ;)?

А как насчет 11? 😂

eko
На сайте с 02.12.2005
Offline
30
eko
#6

ай, ну да... еще 11, 12, 13, 14 :)

eko
На сайте с 02.12.2005
Offline
30
eko
#7

в итоге вот так:

если число заканчивается на 1, то подставляем день

если число заканчивается на 2-4, то подставляем дня

если число заканчивается на 5-9 и 0, то подставляем дней

если число заканчивается на 11-14, то подставляем дней

bondarev.pp.ru
На сайте с 29.09.2005
Offline
202
#8

eko, примерно тоже самое и реализовано в моей функции. :)

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий