Склоняем слова на PHP

222 просмотра
Автор: Николай Ковалёв

Иногда бывают случаи, когда нужно вывести правильное склонение слова к какому-то числу. К примеру, мы выводим количество комментариев к статье и нужно правильно склонять слово «комментарий» в зависимости от количества. То есть мы должны получить примерно следующее: 5 комментариев, 3 комментария, 1 комментарий и так далее.

В этом деле поможет следующая функция:

if(!function_exists("NikolausDeclination"))
{
	function NikolausDeclination($number, $declination_array)
	{
		$ostatok = $number % 100;
		if($ostatok >= 11 && $ostatok <= 19)
		{
		    $ending = $declination_array[2];
		}
		else
		{
		    $i = $number % 10;
		    switch($i)
		    {
		        case (1): $ending = $declination_array[0]; break;
		        case (2):
		        case (3):
		        case (4): $ending = $declination_array[1]; break;
		        default: $ending = $declination_array[2];
		    }
		}
		return $number . ' ' . $ending;
	}
}

У функции два параметра. Первый — это число, а второй — массив со значениями склонённых слов для количества: 1, 4 и 5.

Чтобы всё было понятно, вот наглядный пример работы с этой функцией:

$comm = array(
	0 => "комментарий", // 1 комментарий
	1 => "комментария", // 4 комментария
	2 => "комментариев" // 5 комментариев
);

$count_comments = NikolausDeclination(58, $comm);
echo($count_comments); // получим ответ: 58 комментариев
5.00 1 голос