Как стать автором
Обновить

Комментарии 26

Уважаемый, Вы изобретаете велосипед. ;)
Вы знаете другое решение?:)
Насколько я помню курс русского языка это называется спряжением, а склонением называется несколько другое :)
Что-то Вы плохо помните. Спряжение глаголов, склонение существительных.
Или я перепутал :)
Перепутали =)
Не сочтите за придирки, быстрее так имхо:
$n = abs($n) % 100;
if ($n >= 5 && $n
Так же было бы удобно иметь возможность хранить склонения одного слова в отдельном массиве и передавать его:
$let = Array('письмо', 'письма', 'писем');
plural(3, $let);
Вообще, у меня так и было. Но для того, чтобы выложить сюда - я это исправил. Для ясности. :) Кому нужно - тот сделает.
хм. Хабр убил все после знака меньше:
$n = abs($n) % 100;
if ($n >= 5 && $n меньше или равно 20) return $form5;
$n = $n % 10;
&lt; — <
Спасибо
НЛО прилетело и опубликовало эту надпись здесь
Вообще, у меня так и было. Но для того, чтобы выложить сюда - я это исправил. Для ясности. :) Кому нужно - тот сделает.
Для разработчика, понимающего важность таких деталей (а именно в этом обычно проблема), вряд ли будет проблемой придумать соответствующий алгоритм.
Чтобы лишний раз не думать и пить лишнюю банку пива;-)
мОлодежь, мОлодежь... :)

В-нулевых, действительно баявелосипед.

Во-первых, нет варианта для значения ноль.
Более по-руску видеть «У вас в ящике писем нет», вместо «У вас в ящике 0 писем». А то ведь можно всю вашу замечательную процедуру выкинуть, уйдя от проблемы как-то так:
«Число писем в вашем ящике таково: %s».

А во-вторых, познайте же радость регулярных выражений (в пхп не силён, пример на перле):

; sub decline ($)
  { return "писем нет" unless $_ = shift
  ; return "$_ писем" if /[5-90]$/ or /1.$/
  ; /1$/ ? "$_ письмо" : "$_ письма"
  }
##################################
; print decline 123



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

(Кстати, мне тут наскучило писать руками "во-первых...во-вторых... в-третьих... в-одиннадцатых..." и т.д., надо бы алгоритмизировать :)
любому пшпшику известно, что строковые функции намного быстрее рег. выражений
А мы куда-то спешим? )
ну да)
из-за таких "программистов" которым всё равно на время выполнения скрипта, появляется такое Г типа php-nuke... У которой рег. выр. везже где можно и 100 запросов на странице...
Спасибо на добром слове и на кавычках, мил-человек )
А также на изучение моего отношения к пхп вообще и на факт того, что пример на другом языке, в частности.
помоему вот наиболее красивое решение.
http://blog.redgraphic.ru/mephisto/09-02-07_334/

"Максим Барышников > C Вами говорит робот!":
function formatWord($num, $wordroot, $endings){
if((int)$num

и применение: echo 'У вас в ящике'.formatWord($i, "пис", array("ьмо", "ьма", "ем"));
пример неудачен :) но смысл я думаю понятен.
не особо решение, если честно.:)
Идея менять глагол мне нравится, но вместо substr($str,-1) был бы лучше %10
НЛО прилетело и опубликовало эту надпись здесь
Прекращай рекламировать свои пайпы…
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории