Все программисты порой сталкиваются с проблемой, когда необходимо добавить нужное окончание к слову, в зависимости от его числового значения. Например, ситуация с отзывами на сайте. Бывает “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 отзыв”.