fork download
  1. <?php
  2.  
  3. // Staring straight up into the sky ... oh my my
  4. /* Возвращает соответствующую числу форму слова: 1 рубль, 2 рубля, 5 рублей */
  5. //function inclineWord($number, $word1, $word2, $word5) {
  6. function inclineWord($number) {
  7. if (($number % 100 >= 10) && ($number % 100 <= 20)) {
  8. $number = " рублей";
  9. }
  10. elseif (($number % 10 == 0) || ($number % 10 >= 5)) {
  11. $number = " рублей";
  12. }
  13. elseif (($number % 10 >= 2) && ($number % 10 <= 4)) {
  14. $number = " рубля";
  15. }
  16. else {
  17. $number = " рубль";
  18. }
  19. return $number;
  20. }
  21. /*
  22.   Преобразует числа от 0 до 999 в текст. Параметр $isFemale равен нулю,
  23.   если мы считаем число для мужского рода (один рубль),
  24.   и 1 — для женского (одна тысяча)
  25.   */
  26.  
  27. //function smallNumberToText($number, $isFemale) {
  28. function smallNumberToText($number) {
  29. $spelling = array(
  30. 0 => 'ноль', 10 => 'десять', 100 => 'сто',
  31. 1 => 'один', 11 => 'одиннадцать', 20 => 'двадцать', 200 => 'двести',
  32. 2 => 'два', 12 => 'двенадцать', 30 => 'тридцать', 300 => 'триста',
  33. 3 => 'три', 13 => 'тринадцать', 40 => 'сорок', 400 => 'четыреста',
  34. 4 => 'четыре', 14 => 'четырнадцать', 50 => 'пятьдесят', 500 => 'пятьсот',
  35. 5 => 'пять', 15 => 'пятнадцать', 60 => 'шестьдесят', 600 => 'шестьсот',
  36. 6 => 'шесть', 16 => 'шестнадцать', 70 => 'семьдесят', 700 => 'семьсот',
  37. 7 => 'семь', 17 => 'семнадцать', 80 => 'восемьдесят', 800 => 'восемьсот',
  38. 8 => 'восемь', 18 => 'восемнадцать', 90 => 'девяносто', 900 => 'девятьсот',
  39. 9 => 'девять', 19 => 'девятнадцать'
  40. );
  41.  
  42. $arr = array();
  43.  
  44. if ($number >= 1000000) {
  45. $million = floor($number / 1000000);
  46. $x = $number % 1000000;
  47. $thousand = floor($x / 1000);
  48. $hundred = $number % 1000;
  49. $arr = array($million, $thousand, $hundred);
  50. if (($million % 100 >= 10) && ($million % 100 <= 20)) {
  51. $mill = " миллионов";
  52. }
  53. elseif (($million % 10 == 1) || ($million % 10 >= 5)) {
  54. $mill = " миллионов";
  55. }
  56. elseif (($million % 10 >= 2) && ($million % 10 <= 4)) {
  57. $mill = " миллиона";
  58. }
  59. else {
  60. $mill = " миллион";
  61. }
  62.  
  63. //var_dump($arr);
  64. }
  65.  
  66. elseif ($number >= 1000) {
  67. $thousand = floor($number / 1000);
  68. $hundred = $number % 1000;
  69. $arr = array($thousand, $houndred);
  70. $numb = ' тысяч ';
  71. // var_dump($arr);
  72.  
  73. }
  74.  
  75. foreach ($arr as $value) {
  76. if ($value >= 100) {
  77. $mod = $value % 100;
  78. $sotni = $value - $mod;
  79. //$value = $spelling[$sotni];
  80. $mod2 = $value % 10;
  81. $desyatki = $mod - $mod2;
  82. $word = $word . ' ' . $spelling[$sotni] . ' ' . $spelling[$desyatki] . ' ' . $spelling[$mod2];
  83.  
  84. }
  85. elseif ($value > 9) {
  86. $mod = $value % 10;
  87. $sotni = $value - $mod;
  88. //$value = $spelling[$sotni];
  89. $desyatki = $mod - $mod2;
  90. $word = $word . ' ' . $spelling[$mod];
  91. }
  92. else {
  93. $word = $word . $spelling[$value];
  94. }
  95.  
  96. }
  97.  
  98. $number = $word;
  99. return $number;
  100.  
  101. /*
  102.   $femaleSpelling = array(
  103.   1 => 'одна', 2 => 'две'
  104.   );
  105.   */
  106. }
  107.  
  108. function numberToText($number) {
  109.  
  110. $number = smallNumberToText($number) . ' ' . '(' . $number . ')' . inclineWord($number);
  111. return $number;
  112. }
  113.  
  114.  
  115. $amount0 = 3222777;
  116. //$amount0 = splitNumber($amount0);
  117. $text0 = numberToText($amount0);
  118. echo "На вашем счету {$text0}\n";
  119. /*
  120.   /* Вызовем функцию несколько раз */
  121. // $amount1 = mt_rand(1,99999999);
  122. // $text1 = numberToText($amount1);
  123.  
  124. //echo "На вашем счету {$text1}\n";
  125.  
  126. //$amount2 = mt_rand(1,99999999);
  127. // $text2 = numberToText($amount2);
  128.  
  129. //echo "На вашем счету {$text2}\n";
  130.  
  131. //$amount3 = mt_rand(1,99999999);
  132. // $text3 = numberToText($amount3);
  133.  
  134. //echo "На вашем счету {$text3}\n";
  135.  
  136. //$amount4 = mt_rand(1,99999999);
  137. //$text4 = numberToText($amount4);
  138.  
  139. //echo "На вашем счету {$text4}\n";
Success #stdin #stdout #stderr 0.02s 24448KB
stdin
Standard input is empty
stdout
На вашем счету три двести двадцать два семьсот семьдесят семь (3222777) рублей
stderr
PHP Notice:  Undefined variable: word in /home/mS3Zgt/prog.php on line 95