"день" "дней" при разных значениях поля отчета календаря
Есть скрипт обратного отчета даты. Нужно при разных значениях выводить либо "дней", либо "дня". "осталось 2 дня","осталось 10 дней". Как можно это реализовать?
<div class="countdown">
<div class="countdown-digits">10</div>
<div class="countdown-label">дней</div>
</div>
Ответы (2 шт):
Автор решения: RifmaMan
→ Ссылка
Можно к примеру сделать условие при выводе:
<? foreach($days as $day): ?>
<? switch(true): ?>
<? case ($day == 1 || $day == 21 || $day == 31): ?>
<? $caption = 'день'; break; ?>
<? case (in_array($day, [2, 3, 4, 22, 23, 24])): ?>
<? $caption = 'дня'; break; ?>
<? default: ?>
<? $caption = 'дней'; ?>
<? endswitch; ?>
<div class="countdown">
<div class="countdown-digits"><?= $day; ?></div>
<div class="countdown-label"><?= $caption; ?></div>
</div>
<? endforeach; ?>
Автор решения: Вадим Александру
→ Ссылка
function decl($n, $str_cases)
{
$cases = [2, 0, 1, 1, 1, 2];
return $str_cases[ (($n % 100 ) > 4 && ($n % 100) < 20) ? 2 : $cases[min(($n % 10), 5)] ];
}
print_r(
decl(10, ['День', 'Дня', 'Дней'])
);