Склонение чисел, реализация на PHP

Опубликовано

Все программисты порой сталкиваются с проблемой, когда необходимо добавить нужное окончание к слову, в зависимости от его числового значения. Например, ситуация с отзывами на сайте. Бывает “1 отзыв”, “2 отзыва” и “12 отзывов”.
С такой же проблемой столкнулся я сегодня, и нашел вот такую удобную функцию, которую реализовал как хелпер для Symfony. Назвал его “numberEndHelper.php” и разместил в каталоге для хелперов.

Это небольшая, но очень мощная функция для склонения слов-чисел, в данном случае — выставление правильных окончаний у существительных относящихся к числительному

function NumberEnd($number, $titles) {
	$cases = array (2, 0, 1, 1, 1, 2);
   	return $titles[ ($number%100>4 && $number%100<20)? 2 : $cases[min($number%10, 5)] ];
}

И теперь можно ее использовать. Для вызова нужного хелпера Symfony используется метод

 use_helper('NumberEnd');
 $a = 21;
 echo $a.' отзыв'.NumberEnd($a, array('','а','ов'));

В итоге мы получим “21 отзыв”.

Share on FacebookShare on Google+Tweet about this on TwitterShare on LinkedInShare on VK
  • denver

    зачет. все работает. спасибо

  • webheader

    Круто. Спасибо. Действительно очень маленький код ))

  • Roman Lipatov

    Отлично! Спасибо!

  • Дмитрий

    А что вы будете делать со слово “ковёр”?

    • ‘ков’ . NumberEnd($a, array(‘ров’,’ер’,’ра’))