3v4l.org

run code in 300+ PHP versions simultaneously
<?php function braceCheck($values) { for ($i = 0; $i <= count($values) - 1; $i++) { $braces = str_split($values[$i]); $values[$i] = isValid($braces); } return $values; } function isValid($braces) { $available = ['{' => '}', '(' => ')', '[' => ']']; $opened = []; $closed = []; for ($i = 0; $i <= count($braces) - 1; $i++) { if (in_array($braces[$i], array_keys($available))) { $opened[] = $braces[$i]; continue; } $closed[] = $braces[$i]; } var_dump($opened, $closed); return match($available, $opened, $closed); } function match($available, $opened, $closed) { $last_open = $opened[count($opened) - 1]; $opened = array_values($opened); $closed = array_values($closed); /* echo 'LAST OPEN: ' . $last_open . PHP_EOL; echo 'AVAILABLE: ' . $available[$last_open] . PHP_EOL; echo 'FIRST CLOSED: ' . $closed[0] . PHP_EOL; */ if (count($opened) !== count($closed)) { echo 'count off'; return 'NO'; } // Check for invalid nesting or non-consecutive braces if ($available[$last_open] !== $closed[0] && $available[$opened[0]] !== $closed[0]) { return 'NO'; } if (count($opened) > 0) { $result = match( $available, array_slice($opened, 0, -1), array_slice($closed, 1) ); } return 'YES'; } $values = ['{}()[]', '{]}[']; var_dump(braceCheck($values)); ?>

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.00718.58
8.3.50.0140.00016.10
8.3.40.0070.00718.72
8.3.30.0040.01118.89
8.3.20.0080.00018.96
8.3.10.0030.00519.28
8.3.00.0080.00019.66
8.2.180.0090.00918.54
8.2.170.0080.00622.96
8.2.160.0070.00720.68
8.2.150.0050.00324.18
8.2.140.0050.00324.66
8.2.130.0140.00426.16
8.2.120.0030.00620.90
8.2.110.0050.00521.98
8.2.100.0100.00317.78
8.2.90.0070.00018.16
8.2.80.0060.00318.78
8.2.70.0030.00617.68
8.2.60.0040.00417.91
8.2.50.0040.00418.10
8.2.40.0040.00420.84
8.2.30.0000.00719.36
8.2.20.0040.00417.84
8.2.10.0040.00417.99
8.2.00.0000.00719.23
8.1.280.0060.00925.92
8.1.270.0050.00324.02
8.1.260.0050.00326.35
8.1.250.0080.00028.09
8.1.240.0100.00022.10
8.1.230.0090.00319.08
8.1.220.0040.00717.74
8.1.210.0040.00418.77
8.1.200.0050.00317.22
8.1.190.0040.00417.13
8.1.180.0040.00418.10
8.1.170.0040.00418.58
8.1.160.0000.00820.55
8.1.150.0040.00418.77
8.1.140.0000.00717.60
8.1.130.0070.00318.87
8.1.120.0000.00817.27
8.1.110.0040.00417.38
8.1.100.0000.00717.21
8.1.90.0000.00717.21
8.1.80.0070.00017.40
8.1.70.0000.00717.36
8.1.60.0000.00817.47
8.1.50.0000.00817.42
8.1.40.0030.00917.39
8.1.30.0000.00817.49
8.1.20.0000.00717.41
8.1.10.0040.00417.35
8.1.00.0060.00317.40
8.0.300.0070.00019.52
8.0.290.0030.00917.05
8.0.280.0070.00018.40
8.0.270.0070.00017.20
8.0.260.0050.00318.86
8.0.250.0000.00616.92
8.0.240.0070.00316.86
8.0.230.0040.00416.88
8.0.220.0040.00316.85
8.0.210.0000.00616.89
8.0.200.0000.00616.91
8.0.190.0040.00416.94
8.0.180.0040.00416.94
8.0.170.0040.00416.80
8.0.160.0040.00416.85
8.0.150.0050.00516.86
8.0.140.0040.00416.83
8.0.130.0000.00613.50
8.0.120.0040.00416.71
8.0.110.0050.00516.92
8.0.100.0070.00016.91
8.0.90.0050.00316.76
8.0.80.0060.01216.86
8.0.70.0000.00716.75
8.0.60.0030.00516.69
8.0.50.0070.00016.72
8.0.30.0100.00616.91
8.0.20.0110.00617.40
8.0.10.0040.00416.82
8.0.00.0090.00916.63
7.4.330.0050.00015.55
7.4.320.0030.00316.52
7.4.300.0030.00316.60
7.4.290.0040.00416.64
7.4.280.0050.00216.62
7.4.270.0040.00316.50
7.4.260.0060.00316.46
7.4.250.0000.00716.51
7.4.240.0070.00016.57
7.4.230.0070.00016.68
7.4.220.0000.00716.63
7.4.210.0060.01016.63
7.4.200.0000.00716.55
7.4.160.0110.00716.60
7.4.140.0160.01017.86
7.4.130.0070.01116.50
7.4.120.0110.00916.57
7.4.110.0120.00916.36
7.4.100.0090.00916.53
7.4.90.0170.00616.74
7.4.80.0080.00819.39
7.4.70.0140.00316.76
7.4.60.0100.01016.58
7.4.50.0040.01116.24
7.4.40.0080.01316.63
7.4.00.0070.00714.91
7.3.330.0000.00613.41
7.3.320.0030.00413.29
7.3.310.0050.00316.50
7.3.300.0000.00716.50
7.3.290.0030.00316.40
7.3.280.0090.00616.44
7.3.260.0080.01116.64
7.3.240.0100.00916.51
7.3.230.0180.00416.72
7.3.210.0140.01016.53
7.3.200.0170.00916.51
7.3.190.0100.00716.61
7.3.180.0060.00916.50
7.3.170.0090.01216.65
7.3.160.0030.01316.57
7.2.330.0140.00716.66
7.2.320.0110.01116.73
7.2.310.0070.01116.58
7.2.300.0090.00916.70
7.2.290.0090.01316.86
7.2.60.2630.00615.09
7.2.50.2750.00815.18
7.2.40.3130.00815.40
7.2.30.1680.00915.53
7.2.20.1690.00915.38
7.2.10.2520.01015.56
7.2.00.2560.01115.45
7.1.200.0040.00815.91
7.1.170.2700.00713.67
7.1.160.2980.01317.02
7.1.150.2560.01017.06
7.1.140.2100.01016.73
7.1.130.2310.00717.01
7.1.120.2210.00917.05
7.1.110.2110.00816.23
7.1.100.2640.01216.16
7.1.90.2150.00716.23
7.1.80.3490.01016.29
7.1.70.2610.00715.23
7.1.60.3100.01033.15
7.1.50.2460.01533.11
7.1.40.2620.01732.55
7.1.30.2810.01632.46
7.1.20.3120.02232.71
7.1.10.3030.01014.56
7.1.00.3630.01414.86

preferences:
78.62 ms | 401 KiB | 5 Q