<?php
/*
Преобразует числа от 0 до 999 в текст. Параметр $isFemale равен нулю,
если мы считаем число для мужского рода (один рубль),
и 1 — для женского (одна тысяча)
*/
function smallNumberToText($number, $isFemale) {
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 => 'девятнадцать'
);
1 => 'одна', 2 => 'две'
);
$lastDigit = $number % 10;
$last2Digits = $number % 100;
$hundred = $number - $last2Digits;
$decade = $last2Digits - $lastDigit;
foreach($spelling as $key => $val) {
if ($number == $key) {
return $spelling[$number];
} elseif (($number == $key + $lastDigit) && ($number >= 20) && ($number < 100)) {
return $val . ' ' . $spelling[$lastDigit];
} elseif (($number == $key + $last2Digits) && ($number >= 100) && ($number < 1000)) {
return $val . ' ' . $spelling[$last2Digits];
} elseif (($last2Digits > 20) && ($last2Digits <= 99) && ($number >= 100) && ($number < 1000)) {
return $spelling[$hundred] . ' ' . $spelling[$decade] . ' ' . $spelling[$lastDigit];
}
}
}
echo smallNumberToText(1010, $isFemale);
PD9waHAKCmVycm9yX3JlcG9ydGluZygtMSk7Cm1iX2ludGVybmFsX2VuY29kaW5nKCd1dGYtOCcpOwoKLyogCiAgICDQn9GA0LXQvtCx0YDQsNC30YPQtdGCINGH0LjRgdC70LAg0L7RgiAwINC00L4gOTk5INCyINGC0LXQutGB0YIuINCf0LDRgNCw0LzQtdGC0YAgJGlzRmVtYWxlINGA0LDQstC10L0g0L3Rg9C70Y4sIAogICAg0LXRgdC70Lgg0LzRiyDRgdGH0LjRgtCw0LXQvCDRh9C40YHQu9C+INC00LvRjyDQvNGD0LbRgdC60L7Qs9C+INGA0L7QtNCwICjQvtC00LjQvSDRgNGD0LHQu9GMKSwgCiAgICDQuCAxIOKAlCDQtNC70Y8g0LbQtdC90YHQutC+0LPQviAo0L7QtNC90LAg0YLRi9GB0Y/Rh9CwKSAKKi8KCmZ1bmN0aW9uIHNtYWxsTnVtYmVyVG9UZXh0KCRudW1iZXIsICRpc0ZlbWFsZSkgewoKCSRzcGVsbGluZyA9IGFycmF5KAoKICAgICAgICAwICAgPT4gICfQvdC+0LvRjCcsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwICA9PiAgJ9C00LXRgdGP0YLRjCcsICAgICAgIDEwMCA9PiAgJ9GB0YLQvicsCiAgICAgICAgMSAgID0+ICAn0L7QtNC40L0nLCAgICAgICAgIDExICA9PiAgJ9C+0LTQuNC90L3QsNC00YbQsNGC0YwnLCAgICAgIDIwICA9PiAgJ9C00LLQsNC00YbQsNGC0YwnLCAgICAgMjAwID0+ICAn0LTQstC10YHRgtC4JywKICAgICAgICAyICAgPT4gICfQtNCy0LAnLCAgICAgICAgICAxMiAgPT4gICfQtNCy0LXQvdCw0LTRhtCw0YLRjCcsICAgICAgIDMwICA9PiAgJ9GC0YDQuNC00YbQsNGC0YwnLCAgICAgMzAwID0+ICAn0YLRgNC40YHRgtCwJywKICAgICAgICAzICAgPT4gICfRgtGA0LgnLCAgICAgICAgICAxMyAgPT4gICfRgtGA0LjQvdCw0LTRhtCw0YLRjCcsICAgICAgIDQwICA9PiAgJ9GB0L7RgNC+0LonLCAgICAgICAgNDAwID0+ICAn0YfQtdGC0YvRgNC10YHRgtCwJywKICAgICAgICA0ICAgPT4gICfRh9C10YLRi9GA0LUnLCAgICAgICAxNCAgPT4gICfRh9C10YLRi9GA0L3QsNC00YbQsNGC0YwnLCAgICAgNTAgID0+ICAn0L/Rj9GC0YzQtNC10YHRj9GCJywgICAgNTAwID0+ICAn0L/Rj9GC0YzRgdC+0YInLAogICAgICAgIDUgICA9PiAgJ9C/0Y/RgtGMJywgICAgICAgICAxNSAgPT4gICfQv9GP0YLQvdCw0LTRhtCw0YLRjCcsICAgICAgIDYwICA9PiAgJ9GI0LXRgdGC0YzQtNC10YHRj9GCJywgICA2MDAgPT4gICfRiNC10YHRgtGM0YHQvtGCJywKICAgICAgICA2ICAgPT4gICfRiNC10YHRgtGMJywgICAgICAgIDE2ICA9PiAgJ9GI0LXRgdGC0L3QsNC00YbQsNGC0YwnLCAgICAgIDcwICA9PiAgJ9GB0LXQvNGM0LTQtdGB0Y/RgicsICAgIDcwMCA9PiAgJ9GB0LXQvNGM0YHQvtGCJywgICAgCiAgICAgICAgNyAgID0+ICAn0YHQtdC80YwnLCAgICAgICAgIDE3ICA9PiAgJ9GB0LXQvNC90LDQtNGG0LDRgtGMJywgICAgICAgODAgID0+ICAn0LLQvtGB0LXQvNGM0LTQtdGB0Y/RgicsICAgODAwID0+ICAn0LLQvtGB0LXQvNGM0YHQvtGCJywKICAgICAgICA4ICAgPT4gICfQstC+0YHQtdC80YwnLCAgICAgICAxOCAgPT4gICfQstC+0YHQtdC80L3QsNC00YbQsNGC0YwnLCAgICAgOTAgID0+ICAn0LTQtdCy0Y/QvdC+0YHRgtC+JywgICAgIDkwMCA9PiAgJ9C00LXQstGP0YLRjNGB0L7RgicsCiAgICAgICAgOSAgID0+ICAn0LTQtdCy0Y/RgtGMJywgICAgICAgMTkgID0+ICAn0LTQtdCy0Y/RgtC90LDQtNGG0LDRgtGMJyAgICAKICAgICk7CiAgICAKCSRmZW1hbGVTcGVsbGluZyA9IGFycmF5KAoJCTEgICA9PiAgJ9C+0LTQvdCwJywgICAgICAgIDIgICA9PiAgJ9C00LLQtScKICAgICk7CgoJJGxhc3REaWdpdCA9ICRudW1iZXIgJSAxMDsKCSRsYXN0MkRpZ2l0cyA9ICRudW1iZXIgJSAxMDA7CgkkaHVuZHJlZCA9ICRudW1iZXIgLSAkbGFzdDJEaWdpdHM7CiAgICAkZGVjYWRlID0gJGxhc3QyRGlnaXRzIC0gJGxhc3REaWdpdDsKICAgIAogICAgZm9yZWFjaCgkc3BlbGxpbmcgYXMgJGtleSA9PiAkdmFsKSB7CgkJaWYgKCRudW1iZXIgPT0gJGtleSkgewogICAgCQlyZXR1cm4gJHNwZWxsaW5nWyRudW1iZXJdOwogICAgCX0gZWxzZWlmICgoJG51bWJlciA9PSAka2V5ICsgJGxhc3REaWdpdCkgJiYgKCRudW1iZXIgPj0gMjApICYmICgkbnVtYmVyIDwgMTAwKSkgewogICAgCQlyZXR1cm4gJHZhbCAuICcgJyAuICRzcGVsbGluZ1skbGFzdERpZ2l0XTsKICAgIAl9IGVsc2VpZiAoKCRudW1iZXIgPT0gJGtleSArICRsYXN0MkRpZ2l0cykgJiYgKCRudW1iZXIgPj0gMTAwKSAmJiAoJG51bWJlciA8IDEwMDApKSB7CiAgICAJCXJldHVybiAkdmFsIC4gJyAnIC4gJHNwZWxsaW5nWyRsYXN0MkRpZ2l0c107CiAgICAJfSBlbHNlaWYgKCgkbGFzdDJEaWdpdHMgPiAyMCkgJiYgKCRsYXN0MkRpZ2l0cyA8PSA5OSkgJiYgKCRudW1iZXIgPj0gMTAwKSAmJiAoJG51bWJlciA8IDEwMDApKSB7CiAgICAJCXJldHVybiAkc3BlbGxpbmdbJGh1bmRyZWRdIC4gJyAnIC4gJHNwZWxsaW5nWyRkZWNhZGVdIC4gJyAnIC4gJHNwZWxsaW5nWyRsYXN0RGlnaXRdOwogICAgCX0KCX0KfQplY2hvIHNtYWxsTnVtYmVyVG9UZXh0KDEwMTAsICRpc0ZlbWFsZSk7