Actionscript 3.0, PHP
Функция может пригодится, если нужно изменять окончание существительного при указании количества чего-либо.
Логика:
Может быть всего 3 формы существительного.
Рассмотрим на примере слова "День".
0 - дней
1 - день
2 - дня
Окончание зависит от последних двух цифр числа (остаток при делении на 100).
Если остаток от 5 до 20, то всегда 0 - "дней".
Дальше достаточно последней цифры числа (остаток при делении на 10).
Если остаток 0 или от 5 до 9, то будет значение 0 - "дней".
Если 1, то значение 1 - "день".
Если от 2 до 4, то значение 2 - "дня".
ActionScript 3.0
Код: Выделить всё
function num_ending(number) { var endings = ['дней','день','дня']; var num100 = number % 100; var num10 = number % 10; if (num100 >= 5 && num100 <= 20) { return endings[0]; } else if (num10 == 0) { return endings[0]; } else if (num10 == 1) { return endings[1]; } else if (num10 >= 2 && num10 <= 4) { return endings[2]; } else if (num10 >= 5 && num10 <= 9) { return endings[0]; } else { return endings[2]; }} var days = 50;trace(days + ' ' + num_ending(days));days = 51;trace(days + ' ' + num_ending(days));days = 52;trace(days + ' ' + num_ending(days));
PHP
Код: Выделить всё
<?phpfunction num_ending($number) { $endings = Array('дней','день','дня'); $num100 = $number % 100; $num10 = $number % 10; if ($num100 >= 5 && $num100 <= 20) { return $endings[0]; } else if ($num10 == 0) { return $endings[0]; } else if ($num10 == 1) { return $endings[1]; } else if ($num10 >= 2 && $num10 <= 4) { return $endings[2]; } else if ($num10 >= 5 && $num10 <= 9) { return $endings[0]; } else { return $endings[2]; }} $days = 50;echo $days.' '.num_ending($days).'<br />';$days = 51;echo $days.' '.num_ending($days).'<br />';$days = 52;echo $days.' '.num_ending($days).'<br />'; ?>