fork download
  1. <?php
  2. // Staring straight up into the sky ... oh my my
  3.  
  4. /* Возвращает соответствующую числу форму слова: 1 рубль, 2 рубля, 5 рублей */
  5. function inclineWord($number, $word1, $word2, $word5)
  6. {
  7. /* DIY */
  8. }
  9.  
  10. /*
  11.   Преобразует числа от 0 до 999 в текст. Параметр $isFemale равен нулю,
  12.   если мы считаем число для мужского рода (один рубль),
  13.   и 1 — для женского (одна тысяча)
  14. */
  15. function smallNumberToText($number, $isFemale)
  16. {
  17.  
  18. $spelling = array(
  19. 0 => 'ноль', 10 => 'десять', 100 => 'сто',
  20. 1 => 'один', 11 => 'одиннадцать', 20 => 'двадцать', 200 => 'двести',
  21. 2 => 'два', 12 => 'двенадцать', 30 => 'тридцать', 300 => 'триста',
  22. 3 => 'три', 13 => 'тринадцать', 40 => 'сорок', 400 => 'четыреста',
  23. 4 => 'четыре', 14 => 'четырнадцать', 50 => 'пятьдесят', 500 => 'пятьсот',
  24. 5 => 'пять', 15 => 'пятнадцать', 60 => 'шестьдесят', 600 => 'шестьсот',
  25. 6 => 'шесть', 16 => 'шестнадцать', 70 => 'семьдесят', 700 => 'семьсот',
  26. 7 => 'семь', 17 => 'семнадцать', 80 => 'восемьдесят', 800 => 'восемьсот',
  27. 8 => 'восемь', 18 => 'восемнадцать', 90 => 'девяносто', 900 => 'девятьсот',
  28. 9 => 'девять', 19 => 'девятнадцать'
  29. );
  30.  
  31. $femaleSpelling = array(
  32. 1 => 'одна',
  33. 2 => 'две'
  34. );
  35.  
  36. $str = array();
  37.  
  38. if(array_key_exists($number, $spelling)){
  39. return $spelling[$number];
  40. }
  41.  
  42. $hundreds = floor($number / 100) * 100;
  43. $tens = floor($number % 100 / 10) * 10;
  44. $units = $number % 10;
  45. $last2Digits = $tens + $units;
  46.  
  47. var_dump($hundreds);
  48. var_dump($tens);
  49. var_dump($units);
  50.  
  51. if($last2Digits == 11 || $last2Digits == 12 || $last2Digits == 13 || $last2Digits == 14 || $last2Digits == 15 || $last2Digits == 16 || $last2Digits == 17 || $last2Digits == 18 || $last2Digits == 19){
  52. array_push($str, $spelling[$hundreds], $spelling[$last2Digits]);
  53. }
  54. else{
  55. if($hundreds > 0){array_push($str, $spelling[$hundreds]);}
  56. if($tens > 0){array_push($str, $spelling[$tens]);}
  57. if($units > 0){array_push($str, $spelling[$units]);}
  58. }
  59. print_r($str);
  60. $str = implode($str, " ");
  61. return trim($str);
  62. }
  63.  
  64. function numberToText($number)
  65. {
  66.  
  67. $result = smallNumberToText($number, 0);
  68. return $result;
  69. }
  70.  
  71. /* Вызовем функцию несколько раз */
  72. $amount1 = 1030;
  73. $text1 = numberToText($amount1);
  74.  
  75. echo "На вашем счету {$text1}\n";
  76.  
  77. $amount2 = 111;
  78. $text2 = numberToText($amount2);
  79.  
  80. echo "На вашем счету {$text2}\n";
  81.  
  82. $amount3 = 91;
  83. $text3 = numberToText($amount3);
  84.  
  85. echo "На вашем счету {$text3}\n";
  86.  
  87. $amount4 = mt_rand(1, 99999999);
  88. $text4 = numberToText($amount4);
  89.  
  90. echo "На вашем счету {$text4}\n";
  91.  
Success #stdin #stdout #stderr 0.02s 24468KB
stdin
Standard input is empty
stdout
float(1000)
float(30)
int(0)
Array
(
    [0] => 
    [1] => тридцать
)
На вашем счету тридцать
float(100)
float(10)
int(1)
Array
(
    [0] => сто
    [1] => одиннадцать
)
На вашем счету сто одиннадцать
float(0)
float(90)
int(1)
Array
(
    [0] => девяносто
    [1] => один
)
На вашем счету девяносто один
float(10118400)
float(0)
int(7)
Array
(
    [0] => 
    [1] => семь
)
На вашем счету семь
stderr
PHP Notice:  Undefined offset: 1000 in /home/09vzUI/prog.php on line 57
PHP Notice:  Undefined offset: 10118400 in /home/09vzUI/prog.php on line 57