fork(3) download
  1. <?php
  2.  
  3. function spellSmallNumber($number, $female = null){
  4. $last2Digits = $number % 100;
  5. $lastDigit = $number % 10;
  6. $hundreds = $number - $last2Digits;
  7. $decades = $last2Digits - ($number % 10);
  8. $words = [];
  9. $femaleSpelling = array(
  10. 1 => 'одна', 2 => 'две'
  11. );
  12. $numbertoWords = array(
  13. 0 => 'ноль', 10 => 'десять', 100 => 'сто',
  14. 1 => 'один', 11 => 'одиннадцать', 20 => 'двадцать', 200 => 'двести',
  15. 2 => 'два', 12 => 'двенадцать', 30 => 'тридцать', 300 => 'триста',
  16. 3 => 'три', 13 => 'тринадцать', 40 => 'сорок', 400 => 'четыреста',
  17. 4 => 'четыре', 14 => 'четырнадцать', 50 => 'пятьдесят', 500 => 'пятьсот',
  18. 5 => 'пять', 15 => 'пятнадцать', 60 => 'шестьдесят', 600 => 'шестьсот',
  19. 6 => 'шесть', 16 => 'шестнадцать', 70 => 'семьдесят', 700 => 'семьсот',
  20. 7 => 'семь', 17 => 'семнадцать', 80 => 'восемьдесят', 800 => 'восемьсот',
  21. 8 => 'восемь', 18 => 'восемнадцать', 90 => 'девяносто', 900 => 'девятьсот',
  22. 9 => 'девять', 19 => 'девятнадцать'
  23. );
  24.  
  25. if($number == 0){
  26. return $numbertoWords[$number];
  27. }else{
  28. if($hundreds != 0){ //Сотни
  29. $words[] = $numbertoWords[$hundreds];
  30. }
  31. if($last2Digits >= 10 && $last2Digits <= 19){ // 10-19
  32. $words[] = $numbertoWords[$last2Digits];
  33. }else{
  34. if($decades != 0){ //Десятки
  35. $words[] = $numbertoWords[$decades];
  36. }
  37. if($female == 1 && ($lastDigit == 1 || $lastDigit == 2)){
  38. $words[] = $femaleSpelling[$lastDigit];//Единицы
  39. }else{
  40. if($lastDigit != 0){
  41. $words[] = $numbertoWords[$lastDigit];
  42. }
  43. }
  44. }
  45. }
  46. $result = implode(" ", $words);
  47. return $result;
  48. }
  49.  
  50. function inclineWord ($number, $word1, $word2, $word5){
  51. $last2Digits = $number % 100;
  52. $lastDigit = $number % 10;
  53.  
  54. if($last2Digits >= 11 && $last2Digits <=14){
  55. return $word5;
  56. }elseif($lastDigit == 1){
  57. return $word1;
  58. }elseif($lastDigit >= 2 && $lastDigit <= 4){
  59. return $word2;
  60. }else{
  61. return $word5;
  62. }
  63. }
  64.  
  65. function spellNumber($number){
  66. $words = [];
  67. $millions = floor($number / 1000000);
  68. $thousands = floor($number / 1000 % 1000);
  69. $units = $number % 1000;
  70. $millionstoWords = spellSmallNumber($millions) ." ". inclineWord($millions, "миллион ", "миллиона ", "миллионов ");
  71. $thousandstoWords = spellSmallNumber($thousands, 1) ." ". inclineWord($thousands, "тысяча ", "тысячи ", "тысяч ");
  72. $unitstoWords = spellSmallNumber($units) ." ". inclineWord($units, "рубль ", "рубля ", "рублей ");
  73. if($millions == 0){
  74. }else{
  75. $words[] = $millionstoWords;
  76. }
  77. if($thousands == 0){
  78. }else{
  79. $words[] = $thousandstoWords;
  80. }
  81. if($units == 0 && $number != 0){
  82. $words[] = inclineWord($units, "рубль ", "рубля ", "рублей ");
  83. }else{
  84. $words[] = $unitstoWords;
  85. }
  86. $result = implode($words);
  87. return $result;
  88. }
  89.  
  90. $amount1 = mt_rand(1,99999999);
  91. $text1 = spellNumber($amount1);
  92. echo "На вашем счету {$text1}\n";
  93.  
  94. $amount2 = mt_rand(1,99999999);
  95. $text2 = spellNumber($amount2);
  96.  
  97. echo "На вашем счету {$text2}\n";
  98.  
  99. $amount3 = mt_rand(1,99999999);
  100. $text3 = spellNumber($amount3);
  101.  
  102. echo "На вашем счету {$text3}\n";
  103.  
  104. $amount4 = mt_rand(1,99999999);
  105. $text4 = spellNumber($amount4);
  106.  
  107. echo "На вашем счету {$text4}\n";
Success #stdin #stdout 0.02s 52472KB
stdin
Standard input is empty
stdout
На вашем счету семьдесят пять миллионов девятьсот двадцать три тысячи четыреста восемьдесят пять рублей 
На вашем счету двадцать миллионов девятьсот тридцать семь тысяч двести восемьдесят девять рублей 
На вашем счету пять миллионов девятьсот тридцать девять тысяч восемьсот двадцать три рубля 
На вашем счету двадцать девять миллионов восемьдесят три тысячи пятьсот сорок восемь рублей