3v4l.org

run code in 300+ PHP versions simultaneously
<?php // Staring straight up into the sky ... oh my my error_reporting(-1); mb_internal_encoding('utf-8'); /* Возвращает соответствующую числу форму слова: 1 рубль, 2 рубля, 5 рублей */ function inclineWord($number, $key) { $formsOfWords = array( 0 => array("рубль", "рубля", "рублей"), 1 => array("тысяча", "тысячи", "тысяч"), 2 => array("миллион", "миллиона", "миллионов") ); $number = $number % 10; if ($number >= 11 && $number <= 14){ return $formsOfWords[$key][2]; }if ($number == 1){ return $formsOfWords[$key][0]; } elseif ($number > 1 && $number < 5) { return $formsOfWords[$key][1]; } else { return $formsOfWords[$key][2]; } } /* Преобразует числа от 0 до 999 в текст. Параметр $isFemale равен нулю, если мы считаем число для мужского рода (один рубль), и 1 — для женского (одна тысяча) */ function smallNumberToText($number, $isFemale) { $spelling = array( 0 => 'ноль', 1 => 'один', 2 => 'два', 3 => 'три', 4 => 'четыре', 5 => 'пять', 6 => 'шесть', 7 => 'семь', 8 => 'восемь', 9 => 'девять', 10 => 'десять', 11 => 'одиннадцать', 12 => 'двенадцать', 13 => 'тринадцать', 14 => 'четырнадцать', 15 => 'пятнадцать', 16 => 'шестнадцать', 17 => 'семнадцать', 18 => 'восемнадцать', 19 => 'девятнадцать', 20 => 'двадцать', 30 => 'тридцать', 40 => 'сорок', 50 => 'пятьдесят', 60 => 'шестьдесят', 70 => 'семьдесят', 80 => 'восемьдесят', 90 => 'девяносто', 100 => 'сто', 200 => 'двести', 300 => 'триста', 400 => 'четыреста', 500 => 'пятьсот', 600 => 'шестьсот', 700 => 'семьсот', 800 => 'восемьсот', 900 => 'девятьсот' ); $femaleSpelling = array( 1 => 'одна', 2 => 'две' ); $digitsByWord = ""; if ($number == 0){ return $spelling[0]; } if ($number >= 100){ $digits = floor($number / 100) * 100; $digitsByWord = $spelling[$digits].' '; $number = $number % 100; } if ($number > 9 && $number <20){ $digitsByWord = $digitsByWord.$spelling[$number].' '; return $digitsByWord; } if ($number > 19){ $digits = floor($number / 10) * 10; $digitsByWord = $digitsByWord.$spelling[$digits].' '; $number = $number % 10; } if ($number > 0){ if ($isFemale == 1 && $number == 1){ $digitsByWord = $digitsByWord.$femaleSpelling[1].' '; } elseif ($isFemale == 1 && $number == 2) { $digitsByWord = $digitsByWord.$femaleSpelling[2].' '; } else { $digitsByWord = $digitsByWord.$spelling[$number].' '; } } return $digitsByWord; } function numberToText($number) { for ($i = 0; $i < 3; $i++){ $threeDigits[$i] = $number % 1000; $number =floor($number / 1000); } // $threeDigits = array_reverse($threeDigits); // for ($i = 0; $i < 2; $i++){ // if ($threeDigits[$i] == 0){ // array_shift($threeDigits); // } // } $threeDigitsWords = array(); foreach ($threeDigits as $key => $value) { if ($value == 0){ break; } if ($key == 1){ $isFemale = 1; } else { $isFemale = 0; } $threeDigitsWords[$key] = smallNumberToText($value, $isFemale); $threeDigitsWords[$key] = $threeDigitsWords[$key].inclineWord($value, $key); } $threeDigitsWords = array_reverse($threeDigitsWords); return implode(" ", $threeDigitsWords); } $amount1 = 781000001; echo $amount1, "\n"; $text1 = numberToText($amount1); echo "На вашем счету {$text1}\n";

Here you find the average performance (time & memory) of each version. A grayed out version indicates it didn't complete successfully (based on exit-code).

VersionSystem time (s)User time (s)Memory (MiB)
8.3.60.0070.01018.18
8.3.50.0060.00918.19
8.3.40.0120.00318.84
8.3.30.0090.00618.72
8.3.20.0080.00020.42
8.3.10.0030.00520.91
8.3.00.0000.00819.19
8.2.180.0110.00718.29
8.2.170.0040.01522.96
8.2.160.0100.00319.43
8.2.150.0000.00824.18
8.2.140.0080.00024.66
8.2.130.0040.00419.95
8.2.120.0060.00326.35
8.2.110.0000.01120.40
8.2.100.0090.00617.94
8.2.90.0030.00517.77
8.2.80.0040.00418.05
8.2.70.0060.00317.91
8.2.60.0050.00518.34
8.2.50.0040.00418.10
8.2.40.0060.00322.27
8.2.30.0040.00419.29
8.2.20.0060.00318.28
8.2.10.0000.00818.28
8.2.00.0000.00818.25
8.1.280.0070.01025.92
8.1.270.0090.00023.99
8.1.260.0050.00326.35
8.1.250.0040.00428.09
8.1.240.0090.00020.57
8.1.230.0070.00420.97
8.1.220.0060.00317.91
8.1.210.0060.00318.79
8.1.200.0060.00317.48
8.1.190.0000.00817.36
8.1.180.0080.00018.10
8.1.170.0080.00018.91
8.1.160.0070.00019.02
8.1.150.0040.00418.90
8.1.140.0000.00819.68
8.1.130.0030.00318.95
8.1.120.0040.00417.55
8.1.110.0030.00617.45
8.1.100.0050.00217.49
8.1.90.0000.00817.56
8.1.80.0000.00717.55
8.1.70.0030.00317.60
8.1.60.0040.00417.67
8.1.50.0030.00517.52
8.1.40.0000.00817.54
8.1.30.0090.00017.78
8.1.20.0040.00417.79
8.1.10.0000.00817.58
8.1.00.0000.00817.65
8.0.300.0030.00521.56
8.0.290.0000.00816.75
8.0.280.0000.00718.55
8.0.270.0000.00717.36
8.0.260.0030.00318.98
8.0.250.0030.00317.05
8.0.240.0000.00717.12
8.0.230.0040.00417.04
8.0.220.0000.00717.00
8.0.210.0040.00416.92
8.0.200.0000.00716.96
8.0.190.0090.00017.10
8.0.180.0080.00017.02
8.0.170.0050.00317.03
8.0.160.0040.00417.10
8.0.150.0000.00716.91
8.0.140.0050.00316.82
8.0.130.0030.00313.38
8.0.120.0070.00016.84
8.0.110.0000.00816.84
8.0.100.0040.00417.09
8.0.90.0090.00016.94
8.0.80.0000.01416.88
8.0.70.0040.00416.82
8.0.60.0000.00717.02
8.0.50.0040.00417.01
8.0.30.0140.00717.13
8.0.20.0130.00917.45
8.0.10.0030.00517.18
8.0.00.0060.01216.92
7.4.330.0030.00315.55
7.4.320.0000.00616.62
7.4.300.0000.00716.60
7.4.290.0050.00316.50
7.4.280.0040.00416.50
7.4.270.0000.00716.53
7.4.260.0000.00816.69
7.4.250.0030.00616.55
7.4.240.0070.00016.59
7.4.230.0000.00716.71
7.4.220.0090.00916.70
7.4.210.0110.00916.63
7.4.200.0080.00016.80
7.4.160.0110.00816.60
7.4.150.0120.00617.40
7.4.140.0140.00617.86
7.4.130.0090.01416.46
7.4.120.0110.01316.64
7.4.110.0120.01016.75
7.4.100.0120.00616.50
7.4.90.0100.01316.52
7.4.80.0200.00019.39
7.4.70.0100.00616.73
7.4.60.0070.01016.59
7.4.50.0060.01216.67
7.4.40.0120.00916.67
7.4.30.0180.01516.62
7.4.00.0110.00714.79
7.3.330.0050.00013.32
7.3.320.0060.00013.24
7.3.310.0000.00716.48
7.3.300.0000.00716.46
7.3.290.0080.00816.42
7.3.280.0060.00916.42
7.3.270.0130.01317.40
7.3.260.0030.01616.65
7.3.250.0120.00716.54
7.3.240.0110.00616.57
7.3.230.0100.00716.43
7.3.210.0070.01016.41
7.3.200.0110.00616.59
7.3.190.0160.00016.45
7.3.180.0100.00716.75
7.3.170.0060.01216.53
7.3.160.0110.00616.52
7.2.330.0090.01216.95
7.2.320.0130.01016.64
7.2.310.0130.01016.88
7.2.300.0120.01216.70
7.2.290.0100.01316.66
7.2.110.0070.00716.57
7.2.60.0070.00716.98
7.1.200.0110.00015.99
7.1.70.0110.00817.27
7.1.60.0220.00934.96
7.1.50.0220.01134.54
7.1.40.0200.01334.51
7.1.30.0130.02034.63
7.1.20.0320.01034.60
7.1.10.0040.01116.65
7.1.00.0170.00516.68
7.0.200.0070.01016.85
7.0.190.0030.01316.79
7.0.180.0070.01516.34
7.0.170.0130.00716.46
7.0.160.0090.01216.18
7.0.150.0090.00616.21
7.0.140.0110.00816.37
7.0.130.0170.01016.73
7.0.120.0100.01116.65
7.0.110.0120.00916.25
7.0.100.0110.01116.43
7.0.90.0090.01216.39
7.0.80.0000.01916.20
7.0.70.0110.00716.27
7.0.60.0060.01016.23
7.0.50.0070.01016.62
7.0.40.0060.00916.49
7.0.30.0100.00816.49
7.0.20.0110.00616.48
7.0.10.0090.01016.38
7.0.00.0040.01516.38

preferences:
65.04 ms | 400 KiB | 5 Q