3v4l.org

run code in 300+ PHP versions simultaneously
<?php /* Дана сумма, находящаяся в банке на счету, в рублях. Вывести ее в текстовом виде вроде "шестнадцать миллионов десять тысяч три (16010003) рубля". */ error_reporting(-1); mb_internal_encoding('UTF-8'); /* Делает первую букву предложения заглавной */ function makeFirstLetterUppercase($text) { $text = mb_strtoupper(mb_substr($text, 0, 1)) . mb_substr($text, 1, NULL); return $text; } /* Возвращает соответствующую числу форму слова: 1 рубль, 2 рубля, 5 рублей */ function inclineWord($number, $word1, $word2, $word5) { $exception = $number; $number = $number % 10; if (($number == 1) && ($exception != 11)) { return $word1; } elseif (($number >= 2) && ($number <= 4) && (($exception <= 10) || ($exception >= 15))) { return $word2; } else { return $word5; } } /* Преобразует числа от 0 до 999 в текст. Параметр $isFemale равен нулю, если мы считаем число для мужского рода (один рубль), и 1 — для женского (одна тысяча) */ 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 => 'девятнадцать' ); if (($isFemale == 1) || ($isFemale == 2)) { $spelling[1] = 'одна'; $spelling[2] = 'две'; } $firstDigit = floor($number / 100) * 100; // Получаем кол-во сотен (900 из числа 985) $middleDigit = floor(($number % 100) / 10) * 10; // Получаем кол-во десятков (80 из числа 985) $lastDigit = $number % 10; // Получаем кол-во единиц (5 из числа 985) if ($firstDigit != 0) { $text[] = $spelling[$firstDigit]; } if (($middleDigit != 0) && ($middleDigit >= 20)) { $text[] = $spelling[$middleDigit]; } elseif (($middleDigit != 0) && ($middleDigit <= 19)) { $text[] = $spelling[$middleDigit + $lastDigit]; $lastDigit = 0; } if ($lastDigit != 0) { $text[] = $spelling[$lastDigit]; } return implode($text, ' '); } function numberToText($number) { $millions = floor($number / 1000000); // Получаем кол-во миллинов (99 из числа 99965985) $thousands = floor(($number % 1000000) / 1000); // Получаем кол-во тысяч (965 из числа 99965985) $hundreds = $number % 1000; // Получаем кол-во сотен (985 из числа 99965985) if ($millions != 0) { $text[] = smallNumberToText($millions, 0) . inclineWord($millions % 10, ' миллион', ' миллиона', ' миллионов'); } if ($thousands != 0) { $text[] = smallNumberToText($thousands, $thousands % 10) . inclineWord($thousands % 10, ' тысяча', ' тысячи', ' тысяч'); } if ($hundreds != 0) { $text[] = smallNumberToText($hundreds, 0) . inclineWord($hundreds, ' рубль', ' рубля', ' рублей'); } if ($number == 0) { $text[] = '0 рублей'; } $text = makeFirstLetterUppercase(implode($text, ' ') . " ({$number})"); return $text; } $amount1 = mt_rand(0, 99999999); $text1 = numberToText($amount1); echo "На вашем счету: {$text1}\n"; $amount2 = mt_rand(0, 99999999); $text2 = numberToText($amount2); echo "На вашем счету: {$text2}\n"; $amount3 = mt_rand(0, 99999999); $text3 = numberToText($amount3); echo "На вашем счету: {$text3}\n"; $amount4 = mt_rand(0, 99999999); $text4 = numberToText($amount4); echo "На вашем счету: {$text4}\n"; $amount5 = mt_rand(0, 99999999); $text5 = numberToText($amount5); echo "На вашем счету: {$text5}\n"; $amount6 = mt_rand(0, 99999999); $text6 = numberToText($amount6); echo "На вашем счету: {$text6}\n"; for ($i = 0; $i < 101; $i++) { $text7 = numberToText($i); echo "На вашем счету: {$text7}\n"; }

Abusive script

This script was stopped while abusing our resources


preferences:
24.6 ms | 410 KiB | 5 Q