/**
* Функция rmany
* Служит для выбора правильного склонения множественного числа
*
* @param string $nominative - 1 яблоко
* @param string $quantitative_ablative - 2 яблока
* @param string $accusative - 10 яблок
* @param integer $count - количество элементов
*
* Пример вызова:
* echo rmany('яблоко', 'яблока', 'яблок', 86); // результат "яблок"
*
* @return string
*/
function rmany ($nominative, $quantitative_ablative, $accusative, $count)
{
/* дополняем число нулями и забираем последние две цифры */
$count = intval(substr(sprintf("%010d", $count), -2, 2));
/* выполняем расчёт и возвращаем нужный падеж */
$ln = substr(strval($count), -1);
if (($ln === 0) or (in_array($ln, range(5,9))) or (in_array($count, range(10,20)))) {
return $accusative;
} elseif (in_array($ln, range(2,4)) {
return $quantitative_ablative;
} else {
return $nominative;
}
}
Спустя 223 сек.
/**
* Функция rmany
* Служит для выбора правильного склонения множественного числа
*
* @param string $nominative - 1 яблоко
* @param string $quantitative_ablative - 2 яблока
* @param string $accusative - 10 яблок
* @param integer $count - количество элементов
*
* Пример вызова:
* echo rmany('яблоко', 'яблока', 'яблок', 86); // результат "яблок"
*
* @return string
*/
function rmany ($nominative, $quantitative_ablative, $accusative, $count)
{
/* дополняем число нулями и забираем последние две цифры */
$count = intval(substr(sprintf("%010d", $count), -2, 2));
/* выполняем расчёт и возвращаем нужный падеж */
$ln = substr(strval($count), -1);
if (($ln === 0) or (in_array($ln, range(5,9))) or (in_array($count, range(10,20)))) {
return $accusative;
} elseif (in_array($ln, range(2,4))) {
return $quantitative_ablative;
} else {
return $nominative;
}
}
фикс, скобочку нечаянно удалил при копировании :)