<?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