3v4l.org

run code in 300+ PHP versions simultaneously
<?php error_reporting(-1); mb_internal_encoding('utf-8'); /* Возвращает соответствующую числу форму слова: 1 рубль, 2 рубля, 5 рублей */ //создадим массивы в массиве, чтобы можно было искать по типу $массив[k][i] где //k это тип слова (зависит от обрабатываемой тройки цифр), а i рассчитывается по алгоритму{ function inclineWord($number, $type) { $type1 = array( 0 => 'миллион', 1 => 'миллиона', 2 => 'миллионов' ); $type2 = array( 0 => 'тысяча', 1 => 'тысячи', 2 => 'тысяч' ); $type3 = array( 0 => 'рубль.', 1 => 'рубля.', 2 => 'рублей.' ); $union = array( 0 => $type1, 1 => $type2, 2 => $type3 ); $i = getFinalWord($number); return ($union[$type][$i]); } //} function smallNumberToText($number, $isFemale) { $spelling = array( 0 => '', 10 => 'десять', 100 => 'сто', 1 => 'один', 11 => 'одиннадцать', 20 => 'двадцать', 200 => 'двести', 2 => 'два', 12 => 'двенадцать', 30 => 'тридцать', 300 => 'триста', 3 => 'три', 13 => 'тринадцать', 40 => 'сорок', 400 => 'четыреста', 4 => 'четыре', 14 => 'четырнадцать', 50 => 'пятьдесят', 500 => 'пятьсот', 5 => 'пять', 15 => 'пятнадцать', 60 => 'шестьдесят', 600 => 'шестьсот', 6 => 'шесть', 16 => 'шестнадцать', 70 => 'семьдесят', 700 => 'семьсот', 7 => 'семь', 17 => 'семнадцать', 80 => 'восемьдесят', 800 => 'восемьсот', 8 => 'восемь', 18 => 'восемнадцать', 90 => 'девяносто', 900 => 'девятьсот', 9 => 'девять', 19 => 'девятнадцать' ); $femaleSpelling = array( 1 => 'одна', 2 => 'две' ); $words = array(); //сотни{ if ($number > 99){ $words[0] = $spelling[(floor($number/100))*100]; } //} //две последних цифры, у которых может быть своё общее название{ $check = $number % 100; if ($check >= 10 && $check <= 19){ $words[1] = $spelling[$check]; //если общего названия нет, то работаем с каждой цифрой по отдельности } else { //десятки if ((floor($check/10))*10 <> 0){ $words[1] = $spelling[(floor($check/10))*10]; } //единицы if ($check % 10 <> 0){ if($isFemale == true && ($check % 10 <= 2)){ $words[2] = $femaleSpelling[$check % 10]; }else{ $words[2] = $spelling[$check % 10]; } } } //} $text = implode(" ", $words); return $text; } //разбиваем исходное число на тройки и помещаем в массив{ function spellSmallNumber($number){ $numbers = array(); $numbers[0] = floor($number / 1000000); $numbers[1] = floor(($number % 1000000)/1000); $numbers[2] = $number % 1000; return ($numbers); } //} function numberToText($number) { $text = ""; //если цифра задана 0, но и считать её не нужно, пишем "ноль"{ if ($number <> 0){ $numbers = spellSmallNumber($number); //$count будет использоваться в массиве $union для поиска словоформ, при проходе каждой тройки увеличивается //0 - миллионы, 1 - тысячи, 2 - сотни{ $count = 0; //} //будем писать все слова, составляющие цифру, в один финальный массив //$i будет служить для счетчика ключа{ $i = 0; $finalArray = array(); //} foreach ($numbers as $oneNumber) { //женский род только у тысячи, т.е. у типа 1{ if ($count == 1){ $isFemale = true; }else{ $isFemale = false; } //} //если группа из 3х цифр равна 0, то нет смысла искать ей слово разрядности и вообще превращать в слово if ($oneNumber <> 0){ $finalArray[$i] = smallNumberToText($oneNumber, $isFemale); $i++; //если это последняя группа (сотни), то слова разрядности искать не нужно if ($count <> 2){ $finalArray[$i] = inclineWord($oneNumber, $count); $i++; } //} } //} $count++; } $text = implode(" ", $finalArray); } else { $text = "ноль"; } //} return $text; } //работа с поиском нужной словоформы. для этого определим 2 последних числа //и если они не в промежутке от 5 до 20, то работаем с последней цифрой{ function getFinalWord($number){ if ($number >= 5 && $number <= 20){ return(2); } elseif($number >= 21){ $number = $number%10; return(checking($number)); } else{ return(checking($number)); } } //} function checking($number){ if ($number == 1){ return(0); }elseif($number >= 2 && $number <= 4){ return(1); }else{ return(2); } } $amount1 = mt_rand(1,99999999); //$amount1 = 7000000; echo "{$amount1}\n"; $text1 = numberToText($amount1); //ищем, какую форму надо поставить у слова "рубль"{ $finalWord = inclineWord($amount1 % 100, 2); //} echo "На вашем счету: {$text1} {$finalWord}\n";
Output for 7.3.12
66930221 На вашем счету: шестьдесят шесть миллионов девятьсот тридцать тысяч двести двадцать один рубль.
Output for 7.3.11
36837107 На вашем счету: тридцать шесть миллионов восемьсот тридцать семь тысяч сто семь рублей.
Output for 7.3.10
35761832 На вашем счету: тридцать пять миллионов семьсот шестьдесят одна тысяча восемьсот тридцать два рубля.
Output for 7.3.9
46349743 На вашем счету: сорок шесть миллионов триста сорок девять тысяч семьсот сорок три рубля.
Output for 7.3.8
67369033 На вашем счету: шестьдесят семь миллионов триста шестьдесят девять тысяч тридцать три рубля.
Output for 7.3.7
29059558 На вашем счету: двадцать девять миллионов пятьдесят девять тысяч пятьсот пятьдесят восемь рублей.
Output for 7.3.6
97855366 На вашем счету: девяносто семь миллионов восемьсот пятьдесят пять тысяч триста шестьдесят шесть рублей.
Output for 7.3.5
95010421 На вашем счету: девяносто пять миллионов десять тысяч четыреста двадцать один рубль.
Output for 7.3.4
27389879 На вашем счету: двадцать семь миллионов триста восемьдесят девять тысяч восемьсот семьдесят девять рублей.
Output for 7.3.3
48108378 На вашем счету: сорок восемь миллионов сто восемь тысяч триста семьдесят восемь рублей.
Output for 7.3.2
1774530 На вашем счету: один миллион семьсот семьдесят четыре тысячи пятьсот тридцать рублей.
Output for 7.3.1
98945013 На вашем счету: девяносто восемь миллионов девятьсот сорок пять тысяч тринадцать рублей.
Output for 7.3.0
21027479 На вашем счету: двадцать один миллион двадцать семь тысяч четыреста семьдесят девять рублей.
Output for 7.2.24
12911968 На вашем счету: двенадцать миллионов девятьсот одиннадцать тысяча девятьсот шестьдесят восемь рублей.
Output for 7.2.23
35802686 На вашем счету: тридцать пять миллионов восемьсот две тысячи шестьсот восемьдесят шесть рублей.
Output for 7.2.22
42885053 На вашем счету: сорок два миллиона восемьсот восемьдесят пять тысяч пятьдесят три рубля.
Output for 7.2.21
37896429 На вашем счету: тридцать семь миллионов восемьсот девяносто шесть тысяч четыреста двадцать девять рублей.
Output for 7.2.20
32483513 На вашем счету: тридцать два миллиона четыреста восемьдесят три тысячи пятьсот тринадцать рублей.
Output for 7.2.19
60003774 На вашем счету: шестьдесят миллионов три тысячи семьсот семьдесят четыре рубля.
Output for 7.2.18
36858223 На вашем счету: тридцать шесть миллионов восемьсот пятьдесят восемь тысяч двести двадцать три рубля.
Output for 7.2.17
14773536 На вашем счету: четырнадцать миллионов семьсот семьдесят три тысячи пятьсот тридцать шесть рублей.
Output for 7.2.16
97060834 На вашем счету: девяносто семь миллионов шестьдесят тысяч восемьсот тридцать четыре рубля.
Output for 7.2.15
21916819 На вашем счету: двадцать один миллион девятьсот шестнадцать тысяч восемьсот девятнадцать рублей.
Output for 7.2.14
41822009 На вашем счету: сорок один миллион восемьсот двадцать две тысячи девять рублей.
Output for 7.2.13
74239093 На вашем счету: семьдесят четыре миллиона двести тридцать девять тысяч девяносто три рубля.
Output for 7.2.12
49612609 На вашем счету: сорок девять миллионов шестьсот двенадцать тысячи шестьсот девять рублей.
Output for 7.2.11
93882056 На вашем счету: девяносто три миллиона восемьсот восемьдесят две тысячи пятьдесят шесть рублей.
Output for 7.2.10
10611787 На вашем счету: десять миллионов шестьсот одиннадцать тысяча семьсот восемьдесят семь рублей.
Output for 7.2.9
62960946 На вашем счету: шестьдесят два миллиона девятьсот шестьдесят тысяч девятьсот сорок шесть рублей.
Output for 7.2.8
37730063 На вашем счету: тридцать семь миллионов семьсот тридцать тысяч шестьдесят три рубля.
Output for 7.2.7
68347251 На вашем счету: шестьдесят восемь миллионов триста сорок семь тысяч двести пятьдесят один рубль.
Output for 7.2.6
12954825 На вашем счету: двенадцать миллионов девятьсот пятьдесят четыре тысячи восемьсот двадцать пять рублей.
Output for 7.2.5
98445340 На вашем счету: девяносто восемь миллионов четыреста сорок пять тысяч триста сорок рублей.
Output for 7.2.4
71827452 На вашем счету: семьдесят один миллион восемьсот двадцать семь тысяч четыреста пятьдесят два рубля.
Output for 7.2.3
48551906 На вашем счету: сорок восемь миллионов пятьсот пятьдесят одна тысяча девятьсот шесть рублей.
Output for 7.2.2
54044217 На вашем счету: пятьдесят четыре миллиона сорок четыре тысячи двести семнадцать рублей.
Output for 7.2.1
18238280 На вашем счету: восемнадцать миллионов двести тридцать восемь тысяч двести восемьдесят рублей.
Output for 7.2.0
91516339 На вашем счету: девяносто один миллион пятьсот шестнадцать тысяч триста тридцать девять рублей.
Output for 7.1.33
46105985 На вашем счету: сорок шесть миллионов сто пять тысяч девятьсот восемьдесят пять рублей.
Output for 7.1.32
38846721 На вашем счету: тридцать восемь миллионов восемьсот сорок шесть тысяч семьсот двадцать один рубль.
Output for 7.1.31
91108186 На вашем счету: девяносто один миллион сто восемь тысяч сто восемьдесят шесть рублей.
Output for 7.1.30
34099009 На вашем счету: тридцать четыре миллиона девяносто девять тысяч девять рублей.
Output for 7.1.29
83904638 На вашем счету: восемьдесят три миллиона девятьсот четыре тысячи шестьсот тридцать восемь рублей.
Output for 7.1.28
76541478 На вашем счету: семьдесят шесть миллионов пятьсот сорок одна тысяча четыреста семьдесят восемь рублей.
Output for 7.1.27
44583941 На вашем счету: сорок четыре миллиона пятьсот восемьдесят три тысячи девятьсот сорок один рубль.
Output for 7.1.26
3992079 На вашем счету: три миллиона девятьсот девяносто две тысячи семьдесят девять рублей.
Output for 7.1.25
19938428 На вашем счету: девятнадцать миллионов девятьсот тридцать восемь тысяч четыреста двадцать восемь рублей.
Output for 7.1.7
9697939 На вашем счету: девять миллионов шестьсот девяносто семь тысяч девятьсот тридцать девять рублей.
Output for 7.1.6
30630957 На вашем счету: тридцать миллионов шестьсот тридцать тысяч девятьсот пятьдесят семь рублей.
Output for 7.1.5
64753863 На вашем счету: шестьдесят четыре миллиона семьсот пятьдесят три тысячи восемьсот шестьдесят три рубля.
Output for 7.1.3
91396218 На вашем счету: девяносто один миллион триста девяносто шесть тысяч двести восемнадцать рублей.
Output for 7.1.2
91939759 На вашем счету: девяносто один миллион девятьсот тридцать девять тысяч семьсот пятьдесят девять рублей.
Output for 7.1.1
88435289 На вашем счету: восемьдесят восемь миллионов четыреста тридцать пять тысяч двести восемьдесят девять рублей.
Output for 7.1.0
72222812 На вашем счету: семьдесят два миллиона двести двадцать две тысячи восемьсот двенадцать рублей.
Output for 7.0.20
87339306 На вашем счету: восемьдесят семь миллионов триста тридцать девять тысяч триста шесть рублей.
Output for 7.0.17
78382800 На вашем счету: семьдесят восемь миллионов триста восемьдесят две тысячи восемьсот рублей.
Output for 7.0.16
53373956 На вашем счету: пятьдесят три миллиона триста семьдесят три тысячи девятьсот пятьдесят шесть рублей.
Output for 7.0.15
73767799 На вашем счету: семьдесят три миллиона семьсот шестьдесят семь тысяч семьсот девяносто девять рублей.
Output for 7.0.14
56609914 На вашем счету: пятьдесят шесть миллионов шестьсот девять тысяч девятьсот четырнадцать рублей.
Output for 7.0.13
44204695 На вашем счету: сорок четыре миллиона двести четыре тысячи шестьсот девяносто пять рублей.
Output for 7.0.12
59415655 На вашем счету: пятьдесят девять миллионов четыреста пятнадцать тысяч шестьсот пятьдесят пять рублей.
Output for 7.0.11
55101794 На вашем счету: пятьдесят пять миллионов сто одна тысяча семьсот девяносто четыре рубля.
Output for 7.0.10
85772194 На вашем счету: восемьдесят пять миллионов семьсот семьдесят две тысячи сто девяносто четыре рубля.
Output for 7.0.9
75689933 На вашем счету: семьдесят пять миллионов шестьсот восемьдесят девять тысяч девятьсот тридцать три рубля.
Output for 7.0.8
72100109 На вашем счету: семьдесят два миллиона сто тысяч сто девять рублей.
Output for 7.0.7
908237 На вашем счету: девятьсот восемь тысяч двести тридцать семь рублей.
Output for 7.0.6
49802863 На вашем счету: сорок девять миллионов восемьсот две тысячи восемьсот шестьдесят три рубля.
Output for 7.0.5
34287965 На вашем счету: тридцать четыре миллиона двести восемьдесят семь тысяч девятьсот шестьдесят пять рублей.
Output for 7.0.4
8450584 На вашем счету: восемь миллионов четыреста пятьдесят тысяч пятьсот восемьдесят четыре рубля.
Output for 7.0.3
17754766 На вашем счету: семнадцать миллионов семьсот пятьдесят четыре тысячи семьсот шестьдесят шесть рублей.
Output for 7.0.2
37971064 На вашем счету: тридцать семь миллионов девятьсот семьдесят одна тысяча шестьдесят четыре рубля.
Output for 7.0.1
13915208 На вашем счету: тринадцать миллионов девятьсот пятнадцать тысяч двести восемь рублей.
Output for 7.0.0
29484397 На вашем счету: двадцать девять миллионов четыреста восемьдесят четыре тысячи триста девяносто семь рублей.

preferences:
88.51 ms | 401 KiB | 78 Q