№7
Получение правильной формы слова для разного количества
/**
* Получить правильную форму числа для количества элементов.
* @param integer $number - количество
* @param array $wordsForms массив с 3-мя элементами, например такой: array('0'=>'Запись','1'=>'Записи','2'=>'Записей')
* Элементы в нем - это формы слова для количеств соответствуенно 1, 2 и 5
* @return string возвращает правильную форму слова. Например, для входного числа 1021 вернет "Запись", для 12 вернет "Записей", для 652 вернет "Записи"
*/
function numberForm($number,$wordsForms)
{
$cases = array(2, 0, 1, 1, 1, 2);
return $wordsForms[($number%100>4 && $number%100<20)? 2 : $cases[min($number%10, 5)]];
}
// Тестируем:
echo "1 " . numberForm(1, array('Звонок','Звонка','Звонков') . "\n";
echo "11 " . numberForm(11, array('Звонок','Звонка','Звонков') . "\n";
echo "52 " . numberForm(52, array('Звонок','Звонка','Звонков') . "\n";
echo "1025 " . numberForm(1025, array('Звонок','Звонка','Звонков') . "\n";
1 Звонок
11 Звонков
52 Звонка
1025 Звонков
Автор:
Mihanentalpo@yandex.ru
Mihanentalpo@yandex.ru