Заметки о русской литературе, культуре, языке

Счетчик просмотров в Совотеке

В Совотеке используется такой вот скрипт для склонения счетчика сов вверху страницы. Можно ли его как-то упростить? Напишите, пожалуйста.

<?php
function pluralForm($chislo, $form1, $form2, $form5)
{
    $chislo = abs($chislo) % 100;
    $chislo1 = $chislo % 10;
    if ($chislo > 10 && $chislo < 20) return $form5;
    if ($chislo1 > 1 && $chislo1 < 5) return $form2;
    if ($chislo1 == 1) return $form1;
    return $form5;
}
echo 'У&nbsp;нас уже '.$chislo.' <a href="/about">'.pluralForm($chislo, 'сова', 'совы', 'сов').'</a>.
Можно выбрать <a href="/" title="Все совы">из&nbsp;всех</a>, указать нужную
или&nbsp;взять <a href="/random" title="Случайная сова">случайную</a>.<br />
А еще можно <a href="/memory">поиграть</a> с совами или посмотреть <a href="/video">видео</a> с их участием.';
?>

Обновление

Z6a в комментариях подсказал правильную функцию. Спасибо. Теперь всё работает, кажется, даже быстрее. Привожу новый код здесь.

<?php
echo plural_form(42, array('арбуз', 'арбуза', 'арбузов'));
function plural_form($n, $forms) {
return $n%10==1&&$n%100!=11?$forms[0]:($n%10>=2&&$n%10<=4&&($n%100<10||$n%100>=20)?$forms[1]:$forms[2]);
}
?>
Поделиться
Отправить
Запинить
1 комментарий
z6a 2014

Думаю у Вас неправильная функция
<?php

/*
echo plural_form(42, array(’арбуз’, ’арбуза’, ’арбузов’));
*/

function plural_form($n, $forms) {
return $n%10==1&&$n%100!=11?$forms[0]:($n%10>=2&&$n%10<=4&&($n%100<10||$n%100>=20)?$forms[1]:$forms[2]);
}

Константин Когут 2014

Спасибо за помощь!