<?php


error_reporting(-1);
mb_internal_encoding('utf-8');
 
 
/* Возвращает соответствующую числу форму слова: 1 рубль, 2 рубля, 5 рублей */
function toChooseFormOfRouble($number) {
$lenghtOfNumber = (int) floor(log10($number)+1);
$lastTwoDigits = $number % 100;
$lastOneDigit = $number % 10;
//$thousand = ["тысячи","тысяч"];
//$millions = ["миллион","миллионов","миллиона"];
$roubles = ["рубль","рубля","рублей"];

if ($lastOneDigit == 1 && $lastTwoDigits != 11 && $lastTwoDigits != 1 || $number == 1){
     return $roubles[0];
}elseif ($lastOneDigit > 1 && $lastOneDigit < 5 ){
     return $roubles[1];
}

for ($i = 1, $x = 0; $i < 10; $i++) {
$thirdFormOfRouble = "$i$x";
     if ($lastOneDigit > 4 && $lastOneDigit < 10 || $lastTwoDigits == 10 || $lastTwoDigits == $thirdFormOfRouble) {
          return $roubles[2];
     }
}

     
}    

function toChooseFormOfThousands($number) {
} 
/* 
    Преобразует числа от 0 до 999 в текст. Параметр $isFemale равен нулю, 
    если мы считаем число для мужского рода (один рубль), 
    и 1 — для женского (одна тысяча) 
*/

function smallNumberToText($number) {
 
    $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  =>  'девятнадцать'    
    );
 
 
    $resultExp= [];
    
    $hundreds = intval(floor($number / 100) * 100);
    //var_dump($hundreds);
    $tensAndUnits = $number % 100;
    //var_dump($tensAndUnits);
    $units = $tensAndUnits % 10;
    // var_dump($units);
if ($hundreds >= 100) {
     $resultExp[]= $spelling[$hundreds];
}
if ($tensAndUnits >= 1 && $tensAndUnits <= 19) {
     $resultExp[] = $spelling[$tensAndUnits];
}else {
     $tensAndUnits = intval(floor($tensAndUnits / 10)) * 10;
     $resultExp[] = $spelling[$tensAndUnits];
if ($units > 0){
     $resultExp[] = $spelling[$units];
}
     
}

     return implode(" ",$resultExp);     
}

function numberToText($number) {
 
     $lenghtOfNumber = (int) floor(log10($number)+1);
     $formated = number_format($number);

if ($lenghtOfNumber <= 3) {
     $toWords = smallNumberToText($number);
     $goodForm = toChooseFormOfRouble($number); 
     $final = "$toWords $goodForm";
     return $final;
}elseif ($lenghtOfNumber == 4||$lenghtOfNumber == 5|| $lenghtOfNumber == 6) {
     
}


}
$random = mt_rand(100,999);
$meow = numberToText($random);
echo $meow;

?>
