В рунете достаточно часто часто встречаются словосочетания такие как "1 комментариев", "2 человек".
Для того, чтобы слова красиво склонялись можно использовать вот такой класс:
Для этой функции использован класс, для того, чтобы она не пересеклась с другой используемой функцией. Статической сделана для того, что бы не требовалось создавать экземпляр класса. Примеры:
Спасибо Animal за решение этого вопроса.
class datext{
public static function proceedTextual( $numeric, $many, $one, $two )
{
$numeric = (int) abs($numeric);
if ( (numeric % 100 == 1 || ($numeric % 100 > 20) && ( $numeric % 10 == 1 ) ) return $one;
if ( $numeric % 100 == 2 || ($numeric % 100 > 20) && ( $numeric % 10 == 2 ) ) return $two;
if ( $numeric % 100 == 3 || ($numeric % 100 > 20) && ( $numeric % 10 == 3 ) ) return $two;
if ( $numeric % 100 == 4 || ($numeric % 100 > 20) && ( $numeric % 10 == 4 ) ) return $two;
return $many;
}
}
Для этой функции использован класс, для того, чтобы она не пересеклась с другой используемой функцией. Статической сделана для того, что бы не требовалось создавать экземпляр класса. Примеры:
echo "21 ".datext::proceedTextual( 21, 'комментариев', 'комментарий', 'комментария' );на выходе получаем "21 комментарий"
echo "онлайн 152 ".datext::proceedTextual( 152, 'человек', 'человек', 'человека' );на выходе получаем "онлайн 152 человека"
Спасибо Animal за решение этого вопроса.
Комментариев нет:
Отправить комментарий