Склонение слов в PHP после цифр
Довольно частой задачей на PHP является склонение слов, которые идут после какого-либо числа, например, 1 день, 2 дня, 5 дней или 1 раз, 2 раза, 5 раз или 1 год, 2 года, 5 лет.
Данную задачу решить довольно легко, используя специальную функция и массив слов.
function plural_type($n) {
return ($n%10==1 && $n%100!=11 ? 0 : ($n%10>=2 && $n%10<=4 && ($n%100<10 || $n%100>=20) ? 1 : 2));
}
$_plural_years = array('год', 'года', 'лет');
$_plural_months = array('месяц', 'месяца', 'месяцев');
$_plural_days = array('день', 'дня', 'дней');
$_plural_times = array('раз', 'раза', 'раз');$var = 1;
echo $var.' '.$_plural_years[plural_type($var)];
//1 год$var = 3;
echo $var.' '.$_plural_days[plural_type($var)];
//3 дня$var = 5;
echo $var.' '.$_plural_months[plural_type($var)];
//5 месяцев$var = 8;
echo $var.' '.$_plural_times[plural_type($var)];
//8 раз
Главное в этой конструкции - это функция plural_type, в которую мы передаем число. ДЛя вывода правильного слова мы используем массив, в котором 3 значения. В зависимости от того, что возвращает функция, будет выбрано соответствующее слово из массива.
Это далеко не единственный вариант, который позволяет склонять слова на PHP, но мне из всех просмотренных он понравился больше всего, т.к. функция довольно компактная, и очень легко создавать свой массив с любыми другим словами, например, граммами или метрами.