Posted By

huze on 01/18/08


Tagged

postfix language prefix


Versions (?)

Who likes this?

1 person have marked this snippet as a favorite

huze


Convert number in correct declination (Russian)


 / Published in: PHP
 

URL: http://huze.ru

Склонение любых чисел в правильную форму.

  1. /**
  2.  * Выбор нужного падежа числа
  3.  *
  4.  * Пригодится для локализации любых скриптов. Лучше подключать через
  5.  * <code>
  6.  * if ( ! function_exists ( "NumToRu" ) )
  7.  * {
  8.  *
  9.  * }
  10.  * </code>
  11.  * @param int $number Число, требующее падежа
  12.  * @param str $one Форма для mod 10 == 1 и != 11
  13.  * @param str $little Форма для mod 10 == 2, 3, 4 и != 12, 13, 14
  14.  * @param str $many Форма для остальных случаев
  15.  * @return string Нужная форма падежа
  16.  */
  17. function NumToRu ( $number, $one, $little, $many )
  18. {
  19. if ( $number % 100 > 10 && $number % 100 < 15 )
  20. {
  21. return $many;
  22. }
  23. if ( $number % 10 == 1 )
  24. {
  25. return $one;
  26. }
  27. if ( $number % 10 > 1 && $number %10 < 5 )
  28. {
  29. return $little;
  30. }
  31. return $many;
  32. }

Report this snippet  

Comments

RSS Icon Subscribe to comments
Posted By: huze on January 18, 2008

$nums = array ( 1, 2, 6, 11, 21, 102 ); foreach ( $nums as $num ) { echo $num . " " . NumToRu ( $num, "ложка", "ложки", "ложек" ) . "\n"; }

outputs:

1 ложка 2 ложки 6 ложек 11 ложек 21 ложка 102 ложки

You need to login to post a comment.