fork(2) download
  1. <?php
  2.  
  3. // Staring straight up into the sky ... oh my my
  4.  
  5.  
  6. /* Возвращает соответствующую числу форму слова: 1 рубль, 2 рубля, 5 рублей */
  7. function inclineWord($number, $word1, $word2, $word5) {
  8. /* DIY */
  9. }
  10.  
  11. /*
  12.   Преобразует числа от 0 до 999 в текст. Параметр $isFemale равен нулю,
  13.   если мы считаем число для мужского рода (один рубль),
  14.   и 1 — для женского (одна тысяча)
  15. */
  16. function smallNumberToText($number, $isFemale) {
  17.  
  18. $text = '';
  19. $spelling = array(
  20. 0 => 'ноль', 10 => 'десять', 100 => 'сто',
  21. 1 => 'один', 11 => 'одиннадцать', 20 => 'двадцать', 200 => 'двести',
  22. 2 => 'два', 12 => 'двенадцать', 30 => 'тридцать', 300 => 'триста',
  23. 3 => 'три', 13 => 'тринадцать', 40 => 'сорок', 400 => 'четыреста',
  24. 4 => 'четыре', 14 => 'четырнадцать', 50 => 'пятьдесят', 500 => 'пятьсот',
  25. 5 => 'пять', 15 => 'пятнадцать', 60 => 'шестьдесят', 600 => 'шестьсот',
  26. 6 => 'шесть', 16 => 'шестнадцать', 70 => 'семьдесят', 700 => 'семьсот',
  27. 7 => 'семь', 17 => 'семнадцать', 80 => 'восемьдесят', 800 => 'восемьсот',
  28. 8 => 'восемь', 18 => 'восемнадцать', 90 => 'девяносто', 900 => 'девятьсот',
  29. 9 => 'девять', 19 => 'девятнадцать'
  30. );
  31.  
  32. $femaleSpelling = array(
  33. 1 => 'одна', 2 => 'две'
  34. );
  35.  
  36. if ($number < 10) {
  37. $number = $spelling[$number % 10];
  38. return $number;
  39. }
  40. if ($number < 100) {
  41. $number = $spelling[($number % 100) - ($number % 10)].$spelling[$number % 10];
  42. return $number;
  43. }
  44. if ($number < 1000) {
  45. $number = $spelling[$number - ($number % 100)].' '.$spelling[($number % 100) - ($number % 10)].' '.$spelling[$number % 10];
  46. return $number;
  47. }
  48. }
  49.  
  50. function numberToText($number) {
  51.  
  52. $text = '';
  53.  
  54. if ($number == 0) {
  55. return 'ноль (0) рублей';
  56. }
  57.  
  58. if ($number < 1000) {
  59. $textNumber = smallNumberToText ($number);
  60. if (($number % 10 < 5) and ($number % 10 != 1)) {
  61. return "$textNumber ($number) рубля";
  62. }
  63. if (($number % 10 > 5) and ($number % 10 < 10)) {
  64. return "$textNumber ($number) рублей";
  65. }
  66.  
  67. }
  68. }
  69. /* Вызовем функцию несколько раз */
  70. $number = mt_rand (1, 999);
  71. $text1 = numberToText($number);
  72.  
  73. echo "На вашем счету {$text1}\n";
Success #stdin #stdout #stderr 0.03s 52480KB
stdin
Standard input is empty
stdout
На вашем счету восемьсот десять восемь (818) рублей
stderr
PHP Warning:  Missing argument 2 for smallNumberToText(), called in /home/JRkSBt/prog.php on line 61 and defined in /home/JRkSBt/prog.php on line 18