Склонение окончаний у имен существительных после числительных

Склонение окончаний у имен существительных после числительных

Для решения данной задачи нам потребуется написать небольшую функцию и передать ей парочку аргументов. Назовем нашу функцию "Inclination".

Итак, сначала я приведу код функции с примером работы, а затем расскажу что да как.

<?
function inclination($time, $arr){
	   $timex = substr($time, -1);
		     if ($time >=10 AND $time <=20) return $arr[2];
     		elseif ($timex == 1) return $arr[0];
		     elseif ($timex>1 AND $timex<5) return $arr[1];
		     else return $arr[2];
}
// 1 просмотр, 2 просмотра, 5 просмотров
$nazvaniya = array("просмотр", "просмотра", "просмотров"); 
$prosmotrov = 8;
// на выходе получим "8 просмотров"
echo $prosmotrov." ".inclination($prosmotrov, $nazvaniya); 
?>

Теперь подробнее. Функция принимает 2 аргумента:

  • $prosmotrov - переменная, в которой содержится цифра, количество
  • $nazvaniya - одномерный массив, в котором перечисляются просклоненные имена существительные, окончания у которых меняются в зависимости от числительного

Именно эти значения мы подставляем в функцию. И на выходе мы получим красивую фразу. Ведь согласитесь, что, например, фраза "Найдена 21 статья" куда красивее, нежели "Найдено 21 статей".

И все это можно сделать с помощью такой небольшой функции.


  • function getTermination($n, $titles) { return ($titles[($n=($n=$n%100)>19? ($n%10):$n)==1?0 : (($n>1&&$n<=4)?1:2)]); }
  • Зашёл в блог чисто посмотреть (типо вдруг что-то новое увижу), впечатление осталось только то что автор любит сложности.. А лучше было бы прислушиваться к комментам
  • Ещё и не работает ничего толком..ещё и 2 часа назад комментарий написал))