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, $word1, $word2, $word3) { if ($number % 100 >= 10 && $number % 100 <= 19) { return $word3; } elseif ($number % 10 >= 2 && $number % 10 <= 4) { return $word2; } elseif ($number % 10 == 1) { return $word1; } else { return $word3; } } /* Преобразует числа от 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 => 'девятнадцать' ); $femaleSpelling = array( 1 => 'одна', 2 => 'две' ); $text = ""; if ($number > 100) { $reviewNumber = floor($number / 100) * 100; $text = $text." ".$spelling[$reviewNumber]; $number %= 100; } if ($number >= 10 && $number <= 19) { return $text." ".$spelling[$number]; } elseif ($number > 10) { $reviewNumber = floor($number / 10) * 10; $text = $text." ".$spelling[$reviewNumber]; $number %= 10; } if ($isFemale == 1 && $number == 1) { $text = $text." ".$femaleSpelling[1]; } elseif ($isFemale == 1 && $number == 2) { $text = $text." ".$femaleSpelling[2]; } elseif ($number > 0) { $text = $text." ".$spelling[$number]; } return $text; } function numberToText($number) { $baseNumber = $number; $text = ""; if ($number == 0) { return "ноль (0) рублей"; exit; } if (floor($number / 1000000) >= 1) { $numberIterationToSplit = 3; } elseif (floor($number / 1000) >= 1) { $numberIterationToSplit = 2; } else { $numberIterationToSplit = 1; } for ($i = 0; $i < $numberIterationToSplit; $i++) { if ($number % 1000 == 0 && $i != 0) { $number = floor($number / 1000); continue; } if ($i == 1) { $isFemale = 1; } else { $isFemale = 0; } if ($i == 0){ $wordForNumber = "(".$baseNumber.") ".inclineWord($number, "рубль", "рубля", "рублей"); } elseif ($i == 1) { $wordForNumber = inclineWord($number, "тысяча", "тысячи", "тысяч"); } else { $wordForNumber = inclineWord($number, "миллион", "миллиона", "миллионов"); } $text = smallNumberToText($number % 1000, $isFemale)." ".$wordForNumber.$text; $number = floor($number / 1000); } return $text; } /* Вызовем функцию несколько раз */ $amount1 = mt_rand(1,99999999); $text1 = numberToText($amount1); echo "На вашем счету{$text1}\n"; $amount2 = mt_rand(1,99999999); $text2 = numberToText($amount2); echo "На вашем счету{$text2}\n"; $amount3 = mt_rand(1,99999999); $text3 = numberToText($amount3); echo "На вашем счету{$text3}\n"; $amount4 = mt_rand(1,99999999); $text4 = numberToText($amount4); echo "На вашем счету{$text4}\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)
7.3.30.0130.01014.89
7.3.20.0490.00314.88
7.3.10.0170.00616.18
7.3.00.0340.00715.62
7.2.160.0070.00415.00
7.2.150.0690.00315.06
7.2.140.0490.00714.88
7.2.130.0400.00616.00
7.2.120.0290.00516.07
7.2.110.0290.01015.96
7.2.100.0320.00916.07
7.2.90.0470.00415.98
7.2.80.0360.00816.12
7.2.70.0290.00616.05
7.2.60.0270.00816.05
7.2.50.0370.00616.04
7.2.40.0370.00615.98
7.2.30.0340.00716.15
7.2.20.0310.01016.07
7.2.10.0360.00616.04
7.2.00.0320.00716.04
7.1.270.0500.00313.94
7.1.260.0490.00713.88
7.1.250.0330.00714.81
7.1.240.0600.01313.89
7.1.230.0650.00713.96
7.1.220.0670.00314.04
7.1.210.0660.00713.70
7.1.200.0540.01014.05
7.1.190.0650.01614.22
7.1.180.0450.00614.14
7.1.170.0550.00913.90
7.1.160.0620.00413.66
7.1.150.0600.01014.20
7.1.140.1240.00714.07
7.1.130.0740.00014.07
7.1.120.0630.00913.92
7.1.110.0600.00713.96
7.1.100.0410.01014.17
7.1.90.0630.01314.12
7.1.80.0490.01014.17
7.1.70.0490.00714.16
7.1.60.0640.00714.04
7.1.50.0640.00014.25
7.1.40.0700.00713.94
7.1.30.0400.00713.88
7.1.20.0520.01214.04
7.1.10.0570.00613.94
7.1.00.0570.00714.25
7.0.330.0510.00613.58
7.0.320.0600.00313.84
7.0.310.0520.01013.87
7.0.300.0480.00613.64
7.0.290.0530.00913.58
7.0.280.0740.00313.47
7.0.270.0850.01613.66
7.0.260.0480.00413.38
7.0.250.0580.00913.69
7.0.240.0560.01013.57
7.0.230.0630.00713.73
7.0.220.0660.00713.80
7.0.210.0500.01013.80
7.0.200.0370.01513.86
7.0.190.0580.00613.63
7.0.180.0590.00613.44
7.0.170.0660.00713.77
7.0.160.0540.00713.78
7.0.150.0460.01113.66
7.0.140.0540.00813.64
7.0.130.1360.01613.64
7.0.120.0580.00013.74
7.0.110.0840.00713.80
7.0.100.0360.02213.54
7.0.90.0520.00313.83
7.0.80.0630.00713.73
7.0.70.0640.01013.73
7.0.60.0640.00013.63
7.0.50.0600.01013.57
7.0.40.0590.01013.74
7.0.30.0580.01013.51
7.0.20.0480.00713.47
7.0.10.0470.01613.75
7.0.00.0690.00913.81
5.6.400.0140.02114.44
5.6.390.0090.01514.54
5.6.380.0070.01914.23
5.6.370.0060.01214.62
5.6.360.0100.01314.54
5.6.350.0150.01114.41
5.6.340.0080.00814.79
5.6.330.0170.01014.36
5.6.320.0180.00514.38
5.6.310.0200.01214.70
5.6.300.0300.00314.21
5.6.290.0160.01614.10
5.6.280.0220.00914.61
5.6.270.0130.00314.35
5.6.260.0120.01514.55
5.6.250.0130.01014.63
5.6.240.0150.00814.49
5.6.230.0080.01614.43
5.6.220.0110.00914.36
5.6.210.0190.01014.64
5.6.200.0110.01514.75
5.6.190.0180.01414.36
5.6.180.0130.01314.56
5.6.170.0100.00714.61
5.6.160.0210.00814.66
5.6.150.0160.00814.16
5.6.140.0170.01214.35
5.6.130.0130.00314.51
5.6.120.0220.00414.68
5.6.110.0140.01114.47
5.6.100.0100.00314.41
5.6.90.0110.01114.54
5.6.80.0000.01614.06
5.6.70.0090.00914.49
5.6.60.0110.00714.20
5.6.50.0100.00514.38
5.6.40.0100.00714.14
5.6.30.0130.00314.27
5.6.20.0110.01114.25
5.6.10.0170.00314.14
5.6.00.0110.00714.29
5.5.380.0140.01114.38
5.5.370.0130.01314.48
5.5.360.0100.01014.07
5.5.350.0190.00614.43
5.5.340.0120.01814.27
5.5.330.0090.00914.62
5.5.320.0170.00914.22
5.5.310.0190.00614.41
5.5.300.0140.01414.45
5.5.290.0140.00514.13
5.5.280.0130.00514.44
5.5.270.0210.01114.54
5.5.260.0130.01314.75
5.5.250.0170.00314.21
5.5.240.0160.00614.20
5.5.230.0100.00514.70
5.5.220.0040.00914.32
5.5.210.0250.00314.23
5.5.200.0140.00514.56
5.5.190.0100.00714.38
5.5.180.0180.00014.31
5.5.170.0100.00714.30
5.5.160.0040.01314.55
5.5.150.0160.00614.34
5.5.140.0100.01014.43
5.5.130.0100.01014.54
5.5.120.0110.00714.50
5.5.110.0130.01114.53
5.5.100.0150.00214.36
5.5.90.0150.00614.43
5.5.80.0090.00414.47
5.5.70.0140.01714.70
5.5.60.0130.00514.66
5.5.50.0150.00414.31
5.5.40.0150.01014.05
5.5.30.0100.00714.30
5.5.20.0060.01214.23
5.5.10.0120.00614.32
5.5.00.0090.00914.06
5.4.450.0060.00611.36
5.4.440.0060.00811.29
5.4.430.0080.00511.23
5.4.420.0150.00911.33
5.4.410.0100.00711.21
5.4.400.0110.00711.08
5.4.390.0170.00011.02
5.4.380.0160.00011.17
5.4.370.0170.00311.19
5.4.360.0070.00711.16
5.4.350.0160.00310.89
5.4.340.0110.00410.94
5.4.330.0090.01211.10
5.4.320.0070.00911.06
5.4.310.0090.00611.14
5.4.300.0110.00810.95
5.4.290.0180.00011.15
5.4.280.0060.00611.23
5.4.270.0100.00511.18
5.4.260.0090.00611.31
5.4.250.0070.00711.25
5.4.240.0120.00311.01
5.4.230.0050.00911.20
5.4.220.0100.00510.94
5.4.210.0140.00011.01
5.4.200.0110.00011.20
5.4.190.0070.00711.05
5.4.180.0140.00011.09
5.4.170.0090.00510.97
5.4.160.0030.01411.22
5.4.150.0060.00611.12
5.4.140.0110.00211.12
5.4.130.0100.00711.13
5.4.120.0120.00011.03
5.4.110.0060.00610.85
5.4.100.0150.00011.23
5.4.90.0000.01210.91
5.4.80.0130.00211.10
5.4.70.0030.01011.05
5.4.60.0110.00011.21
5.4.50.0220.00010.93
5.4.40.0090.01611.16
5.4.30.0150.00011.18
5.4.20.0100.00711.02
5.4.10.0020.00811.16
5.4.00.0040.01111.07
5.3.290.0080.00610.73
5.3.280.0090.00510.52
5.3.270.0050.00910.75
5.3.260.0110.00510.48
5.3.250.0070.00310.66
5.3.240.0110.00010.63
5.3.230.0070.00710.66
5.3.220.0050.00810.30
5.3.210.0160.00610.30
5.3.200.0070.00710.33
5.3.190.0140.00010.36
5.3.180.0100.00710.66
5.3.170.0130.00510.75
5.3.160.0060.00610.75
5.3.150.0100.00510.66
5.3.140.0190.00510.69
5.3.130.0100.00510.68
5.3.120.0050.01010.59
5.3.110.0090.01310.68
5.3.100.0180.00410.68
5.3.90.0090.00910.73
5.3.80.0030.00910.46
5.3.70.0150.00310.54
5.3.60.0090.00310.68
5.3.50.0060.00810.64
5.3.40.0110.00710.40
5.3.30.0050.00810.64
5.3.20.0070.01010.40
5.3.10.0080.00410.36
5.3.00.0040.00810.43
5.2.170.0070.0079.54
5.2.160.0000.0119.70
5.2.150.0000.0139.39
5.2.140.0090.0039.61
5.2.130.0110.0049.24
5.2.120.0050.0059.67
5.2.110.0080.0039.59
5.2.100.0030.0079.59
5.2.90.0030.0079.41
5.2.80.0110.0049.30
5.2.70.0100.0039.44
5.2.60.0080.0089.37
5.2.50.0120.0069.45
5.2.40.0050.0069.50
5.2.30.0090.0059.44
5.2.20.0090.0029.34
5.2.10.0090.0069.26
5.2.00.0060.0069.29
5.1.60.0100.0038.73
5.1.50.0060.0068.73
5.1.40.0060.0068.73
5.1.30.0170.0008.75
5.1.20.0160.0008.73
5.1.10.0040.0118.73
5.1.00.0100.0008.73
5.0.50.0080.0038.73
5.0.40.0090.0028.73
5.0.30.0000.0098.73
5.0.20.0070.0058.73
5.0.10.0070.0048.73
5.0.00.0080.0008.73
4.4.90.0040.0088.73
4.4.80.0070.0038.73
4.4.70.0090.0028.73
4.4.60.0030.0028.73
4.4.50.0090.0058.73
4.4.40.0030.0038.73
4.4.30.0070.0028.73
4.4.20.0070.0078.73
4.4.10.0000.0078.73
4.4.00.0040.0048.73
4.3.110.0060.0008.73
4.3.100.0030.0068.73
4.3.90.0050.0058.73
4.3.80.0050.0058.73
4.3.70.0050.0088.73
4.3.60.0110.0008.73
4.3.50.0060.0038.73
4.3.40.0030.0038.73
4.3.30.0060.0038.73
4.3.20.0080.0038.73
4.3.10.0080.0038.73
4.3.00.0080.0008.73

preferences:
39.44 ms | 401 KiB | 5 Q