Счетчик просмотров в Совотеке
В Совотеке используется такой вот скрипт для склонения счетчика сов вверху страницы. Можно ли его как-то упростить? Напишите, пожалуйста.
<?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 'У нас уже '.$chislo.' <a href="/about">'.pluralForm($chislo, 'сова', 'совы', 'сов').'</a>.
Можно выбрать <a href="/" title="Все совы">из всех</a>, указать нужную
или взять <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]);
}
?>
Думаю у Вас неправильная функция
<?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]);
}
Спасибо за помощь!