<?php

// Staring straight up into the sky ... oh my my
error_reporting(-1);


function spellSmallNumber($num) {
	
$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;
    }
    

	if($num != 0) {
		
			$wordForHund = floor($num / 100) * 100; //сотни
			$wordHund = $spelling[$wordForHund];
			array_push($result, $wordHund);
	}
	$wordOne = $num % 100;//слово для десятков
	if($wordOne >= 11 && $wordOne <= 20) {
		$wordElTw = $spelling[$wordOne];
		array_push($result, $wordElTw);
}
else {

	
	$tens = floor($num / 10) * 10;//слово для десятков
	if($tens != 0){
	$tens1 = $spelling[$tens];
	array_push($result, $tens1);
}
}

if($num != 0){   //единицы
	$fem = $num % 100;
	$fem1 = $num / 100;
	if($fem = 0){
		if($fem1 >= 1 && $fem1 <=2){
		$fem3 = $femaleSpelling[$fem1];	
		array_push($result, $fem3);	
	}
	}
	$one = $num % 10;
	array_push($result, $one);
}

$text = implode(' ', $result);
return $text;
}



function getWordForm($num, $word, $word1, $word2) {
	$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) {
    $last2Digits = $number % 100;
    if($last2Digits = 1) {
    	return $word1;
    } elseif($last2Digits = 2 or 3 or 4) {
    	return $word2;
    } else {
    	return $word5;
    }
}
 

function spellNumber($number) {
	$hundred = $number % 1000; //сотни
	$withoutNum = floor($number / 1000); //без сотен
	$thousand = $withoutNum % 1000; //тысячN
	$millions = floor($thousand / 1000); // миллионы
	
	$numberToString = array();
	
	$mil = spellSmallNumber($millions);
	array_push($numberToString, $mil);
	$milWord = getWordForm($millions,"миллион","миллиона","миллионов");
	array_push($numberToString, $milWord);
	
	$thous = spellSmallNumber($thousand);
	array_push($numberToString, $thous);
	$thousWord = getWordForm($thousand,"тысяча","тысячи","тысяч");
	array_push($numberToString, $thousWord);
	
	$hund = spellSmallNumber($hundred);
	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";
 
$amount2 = mt_rand(1,99999999);
$text2 = spellNumber($amount2);
 
echo "На вашем счету {$text2}\n";
 
$amount3 = mt_rand(1,99999999);
$text3 = spellNumber($amount3);
 
echo "На вашем счету {$text3}\n";
 
$amount4 = mt_rand(1,99999999);
$text4 = spellNumber($amount4);
 
echo "На вашем счету {$text4}\n";