3v4l.org

run code in 300+ PHP versions simultaneously
<?php /** * Кодирует число в буквенно-числовую последовательность. * * @param int $number Число для кодирования. * @return string Закодированная буквенно-числовая последовательность. */ function encodeNumber(int $number): string { // Символы, используемые для кодирования $charset = join('', [...range('a', 'z'), ...range('A', 'Z'), ...range(0, 9)]); $base = strlen($charset); // Определение основания системы счисления $encoded = ''; // Преобразование числа в заданную систему счисления while ($number > 0) { $remainder = $number % $base; $encoded = $charset[$remainder] . $encoded; $number = (int) ($number / $base); } return $encoded; } /** * Декодирует буквенно-числовую последовательность в число. * * @param string $encoded Закодированная буквенно-числовая последовательность. * @return int Декодированное число. */ function decodeNumber(string $encoded): int { $charset = join('', [...range('a', 'z'), ...range('A', 'Z'), ...range(0, 9)]); $base = strlen($charset); $decoded = 0; // Преобразование буквенно-числовой последовательности в число $length = strlen($encoded); for ($i = 0; $i < $length; $i++) { $value = strpos($charset, $encoded[$i]); $decoded = $decoded * $base + $value; } return $decoded; } $numbers = [56789, 89567, 129087, 9999999, 1e8]; // Кодирование чисел и вывод закодированных значений foreach ($numbers as $number) { $encoded = encodeNumber($number); echo "$number: '$encoded' -> '" . decodeNumber($encoded) . "'\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.70.0110.00418.43
8.3.60.0090.00918.30
8.3.50.0080.00816.68
8.3.40.0110.00721.71
8.3.30.0070.00719.21
8.3.20.0040.00424.18
8.3.10.0100.00922.81
8.3.00.0110.00521.26
8.2.180.0070.00718.41
8.2.170.0070.00718.94
8.2.160.0070.01022.96
8.2.150.0050.00325.66
8.2.140.0090.00621.86
8.2.130.0090.00622.39
8.2.120.0080.00519.71
8.2.110.0070.00920.16
8.2.100.0090.00718.65
8.2.90.0160.00618.50
8.2.80.0180.00419.01
8.2.70.0180.00518.79
8.2.60.0170.00418.85
8.2.50.0140.00818.39
8.2.40.0150.00718.49
8.2.30.0110.01018.86
8.2.20.0150.00718.37
8.2.10.0130.00818.49
8.2.00.0160.00718.37
8.1.280.0090.01225.92
8.1.270.0080.00523.06
8.1.260.0090.00523.55
8.1.250.0080.00524.19
8.1.240.0080.00719.96
8.1.230.0060.00819.43
8.1.220.0120.00618.41
8.1.210.0140.00418.49
8.1.200.0100.00818.21
8.1.190.0120.00718.69
8.1.180.0150.00617.95
8.1.170.0160.00618.27
8.1.160.0140.00618.16
8.1.150.0110.00618.11
8.1.140.0130.00618.14
8.1.130.0150.00318.63
8.1.120.0150.00118.34
8.1.110.0100.00518.25
8.1.100.0120.00518.77
8.1.90.0100.00618.43
8.1.80.0100.00618.31
8.1.70.0100.00418.30
8.1.60.0140.00318.40
8.1.50.0110.00418.65
8.1.40.0130.00218.52
8.1.30.0110.00418.45
8.1.20.0130.00218.49
8.1.10.0130.00418.37
8.1.00.0090.00718.67
8.0.300.0110.00417.63
8.0.290.0120.00517.65
8.0.280.0140.00317.64
8.0.270.0080.00717.67
8.0.260.0120.00518.15
8.0.250.0100.00517.67
8.0.240.0140.00417.63
8.0.230.0060.00917.72
8.0.220.0110.00517.57
8.0.210.0130.00417.98
8.0.200.0140.00217.61
8.0.190.0130.00318.18
8.0.180.0100.00517.77
8.0.170.0140.00318.14
8.0.160.0100.00517.75
8.0.150.0120.00517.63
8.0.140.0110.00717.74
8.0.130.0140.00317.66
8.0.120.0120.00418.10
8.0.110.0110.00317.70
8.0.100.0150.00617.62
8.0.90.0130.00817.56
8.0.80.0120.00618.09
8.0.70.0120.00617.62
8.0.60.0170.00317.57
8.0.50.0150.00517.58
8.0.30.0120.00417.72
8.0.20.0110.00418.17
8.0.10.0160.00417.74

preferences:
46.57 ms | 400 KiB | 5 Q