3v4l.org

run code in 300+ PHP versions simultaneously
<?php function maybe_change_user_language( $site_lang, $user_lang, $selected_lang ) { $result = 'Do nothing.'; if ( $site_lang !== $selected_lang && $user_lang !== $selected_lang ) { $result = "Change from $user_lang to $selected_lang."; } return $result; } // Tests - Scroll to the bottom for results. function test_respect_user_language_preference( $expected, $site_lang, $user_lang, $selected_lang = 'English' ) { $user_lang = maybe_change_user_language( $site_lang, $user_lang, $selected_lang, ); echo 'Expected: ', $expected, PHP_EOL; echo 'Actual: ', $user_lang, PHP_EOL; return 'Result: ' . ( $expected === $user_lang ? 'Pass' : 'Fail' ); } $tests = array( 'defaults with nothing selected' => array( 'expected' => 'Do nothing.', 'site_lang' => 'English', 'user_lang' => 'English', 'selected_lang' => 'English', ), 'no existing preference and selects Spanish' => array( 'expected' => 'Change from English to Spanish.', 'site_lang' => 'English', 'user_lang' => 'English', 'selected_lang' => 'Spanish', ), 'already prefers Spanish and selects Spanish' => array( 'expected' => 'Do nothing.', 'site_lang' => 'English', 'user_lang' => 'Spanish', 'selected_lang' => 'Spanish', ), 'already prefers Spanish and selects nothing' => array( 'expected' => 'Do nothing.', 'site_language' => 'English', 'user_lang' => 'Spanish', 'selected_lang' => 'English', ), ); foreach ( $tests as $test => $args ) { $sep = str_pad( '', strlen( $test ), '=' ); echo $sep, PHP_EOL, $test, PHP_EOL, $sep, PHP_EOL; echo test_respect_user_language_preference( ...array_values( $args ) ), PHP_EOL, PHP_EOL; }

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.0090.00616.63
8.3.50.0000.01420.23
8.3.40.0110.00820.16
8.3.30.0070.00718.95
8.3.20.0000.00924.18
8.3.10.0050.00324.66
8.3.00.0030.00526.16
8.2.180.0090.00625.92
8.2.170.0090.00618.91
8.2.160.0100.00322.96
8.2.150.0080.00025.66
8.2.140.0000.00724.66
8.2.130.0040.00426.16
8.2.120.0040.00421.03
8.2.110.0090.00020.95
8.2.100.0040.00817.78
8.2.90.0000.00920.01
8.2.80.0040.00420.42
8.2.70.0030.00517.63
8.2.60.0000.00817.50
8.2.50.0030.00517.98
8.2.40.0040.00418.22
8.2.30.0000.00718.08
8.2.20.0080.00320.37
8.2.10.0000.00718.02
8.2.00.0050.00219.19
8.1.280.0090.00925.92
8.1.270.0040.00423.99
8.1.260.0040.00426.35
8.1.250.0080.00028.09
8.1.240.0180.00322.04
8.1.230.0100.00320.84
8.1.220.0050.00317.79
8.1.210.0030.00518.95
8.1.200.0000.00817.36
8.1.190.0040.00417.22
8.1.180.0040.00418.10
8.1.170.0030.00617.62
8.1.160.0070.00018.83
8.1.150.0000.00718.58
8.1.140.0040.00417.39
8.1.130.0030.00318.83
8.1.120.0040.00417.38
8.1.110.0000.00717.38
8.1.100.0090.00017.46
8.1.90.0050.00317.47
8.1.80.0040.00417.48
8.1.70.0000.00717.44
8.1.60.0050.00317.57
8.1.50.0040.00417.54
8.1.40.0100.00517.39
8.1.30.0070.00817.65
8.1.20.0080.00617.49
8.1.10.0130.00417.39
8.1.00.0150.00417.33
8.0.300.0050.00220.09
8.0.290.0040.00416.75
8.0.280.0000.00718.39
8.0.270.0030.00316.89
8.0.260.0060.00018.34
8.0.250.0000.00716.99
8.0.240.0030.00516.98
8.0.230.0000.00716.83
8.0.220.0070.00016.94
8.0.210.0070.00016.91
8.0.200.0060.00016.84
8.0.190.0040.00416.98
8.0.180.0070.00016.81
8.0.170.0070.00716.78
8.0.160.0140.00316.82
8.0.150.0120.00516.75
8.0.140.0080.00916.74
8.0.130.0110.00616.81
8.0.120.0140.00316.84
8.0.110.0110.00716.89
8.0.100.0100.00416.81
8.0.90.0080.00516.85
8.0.80.0090.00616.77
8.0.70.0100.00816.82
8.0.60.0160.00316.81
8.0.50.0130.00316.76
8.0.30.0110.00516.82
8.0.20.0120.00516.90
8.0.10.0100.00616.92
7.4.330.0000.00515.55
7.4.320.0040.00416.43
7.4.300.0050.00216.59
7.4.290.0040.00416.56
7.4.280.0160.00116.50
7.4.270.0160.00216.49
7.4.260.0130.00416.41
7.4.250.0130.00516.51
7.4.240.0150.00516.48
7.4.230.0150.00416.48
7.4.220.0110.00516.48
7.4.210.0120.00316.50
7.4.200.0120.00416.49
7.4.190.0120.00316.49
7.4.180.0060.00916.55
7.4.160.0100.00416.56
7.4.150.0120.00316.50
7.4.140.0140.00116.35
7.4.130.0050.00716.44
7.4.120.0080.00616.43
7.4.110.0070.00416.43
7.4.100.0090.00416.45
7.4.90.0100.00316.27
7.4.80.0080.00416.28
7.4.70.0050.00716.26
7.4.60.0080.00416.27
7.4.50.0100.00416.31
7.4.40.0110.00416.34
7.4.30.0140.00116.43
7.4.20.0110.00416.40
7.4.10.0100.00516.46
7.4.00.0080.00716.32

preferences:
26.78 ms | 400 KiB | 5 Q