<?php
 
// Staring straight up into the sky ... oh my my
error_reporting(-1);
 
function spellSmallNumber($num, $female) {
$result = array();
	$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   =>  'две'
    );
 
if ($num == 0) {
	return $num;
}
 
 
$hundWithoutDec = floor($num / 100) * 100; //убирает десятки у сотен
if($hundWithoutDec != 0) {
array_push($result, $spelling[$hundWithoutDec]);
}
$hundDec = $num % 100; // оставляет только десятки
if($hundDec >= 11 and $hundDec <=19) {
	array_push($result, $spelling[$hundDec]);
} elseif($hundDec != 0) {
$hundDecWithoutOne = floor($hundDec / 10) * 10; //десятки без единиц
if($hundDecWithoutOne != 0) {
array_push($result, $spelling[$hundDecWithoutOne]);
}
 
$hundOne = $hundDec % 10;
 
if ($female == 1 or $female == 2) {
	array_push($result, $femaleSpelling[$hundOne]);
} elseif($female == 0) { 
 	if ($hundOne != 0) {
array_push($result, $spelling[$hundOne]);
}
}
 
}
 
 
$text = implode(' ', $result);
return $text;
}
 
 
 
function getWordForm($num, $word, $word1, $word2) {
	$x = $num % 100;
	if($x >= 11 and $x <=20){
		return $word2;
	}
	else {
	$z = $num % 10;
	if($z == 1){
		return $word; // тысяча, миллион
	}
	$z = $num % 10;
	if($z >= 2 && $z <= 4){
		return $word1; //тысячи, миллиона
	}
	else{
		return $word2; // тысяч, миллионов
	}
	}
}
 
function inclineWord($number, $word1, $word2, $word5) {
 	$x = $number % 100;
	if($x >= 11 and $x <=19){
		return $word5;
	} else {
    $last2Digits = $number % 10;
    if($last2Digits == 1) {
    	return $word1;
    } elseif($last2Digits >= 2 and $last2Digits <= 4) {
    	return $word2;
    } else {
    	return $word5;
    }
	}
}
 
 
function spellNumber($number) {
$millions = floor($number / 1000000); //миллионы
$hundredThous = floor($number / 1000);//без тысяч сотни тысяч
$hundWithoutMil = $hundredThous % 1000; // сотни тысяч
$hundred = $number % 1000; //просто сотни
 
$fem = $hundWithoutMil % 10;
if($fem == 1) {
	$female = 1;
} elseif ($fem == 2) {
	$female = 2;
} else {
	$female = 0;
}
 
 
	$numberToString = array();
	array_push($numberToString, $millions,NULL);
	$milWord = getWordForm($millions,"миллион","миллиона","миллионов");
	array_push($numberToString, $milWord);
 
	$thous = spellSmallNumber($hundWithoutMil,$female);
	array_push($numberToString, $thous);
	$thousWord = getWordForm($hundWithoutMil,"тысяча","тысячи","тысяч");
	array_push($numberToString, $thousWord);
 
	$hund = spellSmallNumber($hundred,NULL);
	array_push($numberToString, $hund);
	$hundRouble = inclineWord($hundred,"рубль","рубля","рублей");
	array_push($numberToString, $hundRouble);
 
	$end = implode(" ", $numberToString);
	return $end; 
}
 
$amount1 = mt_rand(1,99999999);
$text1 = spellNumber($amount1);
 
echo "На вашем счету {$text1}\n";
echo "($amount1)\n";
 
$amount2 = mt_rand(1,99999999);
$text2 = spellNumber($amount2);
 
 
echo "На вашем счету {$text2}\n";
echo "($amount2)\n";
 
$amount3 = mt_rand(1,99999999);
$text3 = spellNumber($amount3);
 
 
echo "На вашем счету {$text3}\n";
echo "($amount3)\n";
 
$amount4 = mt_rand(1,99999999);
$text4 = spellNumber($amount4);
 
 
echo "На вашем счету {$text4}\n";
echo "($amount4)\n";
?>