3v4l.org

run code in 300+ PHP versions simultaneously
<?php const IDX_ID = 0; const IDX_PARENT = 1; const IDX_SORT = 4; $menu = array( array(1,3,'Wurm 1.1', 2, 10), array(2,6,'Vogel 2.1', 2, 30), array(3,0,'Tiger 1', 1, 10), array(4,6,'Hund 2.2', 2, 40), array(5,3,'Katze 1.2', 2, 11), array(6,0,'Pferd 2', 1, 20), array(7,1,'Baer 1.1.1', 3, 0), array(8,3,'Schwein 1.3', 2, 12), array(9,4,'Esel 2.2.1', 3, 0), ); // Algorithmus hier function sortMenu($menu, $parentId = 0) { $items = array_filter($menu, function($item) use ($parentId) { return $item[IDX_PARENT] == $parentId; }); if (0 == count($items)) { return array(); } usort($items, function(array $a, array $b) { if ($a[IDX_SORT] == $b[IDX_SORT]) { return 0; } return $a[IDX_SORT] > $b[IDX_SORT] ? 1 : -1; }); $result = array(); foreach ($items as $item) { $result[] = $item; foreach (sortMenu($menu, $item[IDX_ID]) as $child) { $result[] = $child; } } return $result; } $result = sortMenu($menu); $target = array( array(3,0,'Tiger 1', 1, 10), array(1,3,'Wurm 1.1', 2, 10), array(7,1,'Baer 1.1.1', 3, 0), array(5,3,'Katze 1.2', 2, 11), array(8,3,'Schwein 1.3', 2, 12), array(6,0,'Pferd 2', 1, 20), array(2,6,'Vogel 2.1', 2, 30), array(4,6,'Hund 2.2', 2, 40), array(9,4,'Esel 2.2.1', 3, 0), ); var_dump($result == $target);

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.0110.01118.20
8.3.50.0070.01318.05
8.3.40.0070.00718.79
8.3.30.0060.00918.80
8.3.20.0000.00720.34
8.3.10.0080.00020.66
8.3.00.0040.00421.95
8.2.180.0040.01125.92
8.2.170.0070.00719.04
8.2.160.0140.00022.96
8.2.150.0080.00024.18
8.2.140.0080.00024.66
8.2.130.0050.00326.16
8.2.120.0000.00720.79
8.2.110.0070.00321.04
8.2.100.0060.00617.72
8.2.90.0050.00317.84
8.2.80.0040.00418.04
8.2.70.0000.00817.38
8.2.60.0040.00417.93
8.2.50.0040.00418.09
8.2.40.0030.00620.57
8.2.30.0090.00019.40
8.2.20.0080.00017.77
8.2.10.0000.00718.07
8.2.00.0030.00618.07
8.1.280.0160.00325.92
8.1.270.0090.00622.01
8.1.260.0000.00826.35
8.1.250.0040.00428.09
8.1.240.0090.00320.44
8.1.230.0060.00622.69
8.1.220.0040.00417.80
8.1.210.0030.00618.77
8.1.200.0060.00317.35
8.1.190.0030.00617.36
8.1.180.0000.00718.10
8.1.170.0040.00418.64
8.1.160.0070.00020.74
8.1.150.0000.00818.91
8.1.140.0080.00019.60
8.1.130.0040.00717.46
8.1.120.0000.00717.43
8.1.110.0040.00417.46
8.1.100.0040.00417.48
8.1.90.0070.00017.43
8.1.80.0070.00017.37
8.1.70.0000.00717.41
8.1.60.0020.00517.48
8.1.50.0080.00017.46
8.1.40.0030.00517.45
8.1.30.0040.00417.74
8.1.20.0040.00417.54
8.1.10.0040.00417.47
8.1.00.0050.00317.46
8.0.300.0040.00419.64
8.0.290.0070.00016.63
8.0.280.0070.00018.39
8.0.270.0040.00417.30
8.0.260.0030.00316.71
8.0.250.0000.00716.87
8.0.240.0060.00316.96
8.0.230.0070.00016.84
8.0.220.0070.00016.91
8.0.210.0030.00316.87
8.0.200.0000.00616.96
8.0.190.0040.00416.89
8.0.180.0030.00516.96
8.0.170.0050.00216.86
8.0.160.0000.00716.90
8.0.150.0000.00716.74
8.0.140.0040.00416.84
8.0.130.0080.00515.08
8.0.120.0120.00116.74
8.0.110.0080.00516.89
8.0.100.0090.00616.90
8.0.90.0050.00916.76
8.0.80.0110.00916.86
8.0.70.0090.00416.77
8.0.60.0110.00316.78
8.0.50.0100.00416.95
8.0.30.0100.00916.88
8.0.20.0100.00917.28
8.0.10.0060.00816.95
8.0.00.0080.00816.75
7.4.330.0060.00016.71
7.4.320.0000.00616.61
7.4.300.0030.00316.54
7.4.290.0000.00716.51
7.4.280.0000.00816.61
7.4.270.0050.00216.54
7.4.260.0040.00316.46
7.4.250.0040.01016.53
7.4.240.0100.00416.55
7.4.230.0100.00416.38
7.4.220.0140.01016.56
7.4.210.0100.00816.56
7.4.200.0090.00416.45
7.4.190.0150.00316.60
7.4.180.0090.00916.54
7.4.160.0130.00416.57
7.4.150.0130.00516.95
7.4.140.0060.01217.37
7.4.130.0110.00816.54
7.4.120.0120.00616.55
7.4.110.0110.00916.41
7.4.100.0150.00316.51
7.4.90.0130.00416.46
7.4.80.0080.01017.84
7.4.70.0180.00016.55
7.4.60.0070.00916.51
7.4.50.0100.00416.24
7.4.40.0150.00216.51
7.4.30.0060.01116.43
7.4.20.0120.00516.48
7.4.10.0130.00416.33
7.4.00.0090.00815.53
7.3.330.0090.00314.77
7.3.320.0080.00414.77
7.3.310.0070.00616.42
7.3.300.0100.00316.44
7.3.290.0100.00216.32
7.3.280.0120.00916.39
7.3.270.0120.00816.89
7.3.260.0130.00616.39
7.3.250.0100.00916.40
7.3.240.0170.00216.54
7.3.230.0110.00716.49
7.3.220.0070.00416.32
7.3.210.0080.00716.42
7.3.200.0120.00616.42
7.3.190.0130.00416.39
7.3.180.0110.00616.30
7.3.170.0160.00616.40
7.3.160.0120.00516.46
7.3.150.0140.00316.28
7.3.140.0140.00616.20
7.3.130.0120.00416.34
7.3.120.0120.00815.64
7.3.110.0110.00515.53
7.3.100.0060.01015.52
7.3.90.0070.00615.62
7.3.80.0100.00615.44
7.3.70.0130.00315.70
7.3.60.0150.00215.68
7.3.50.0090.00415.63
7.3.40.0080.00215.74
7.3.30.0150.00015.81
7.3.20.0090.00517.44
7.3.10.0130.00517.44
7.3.00.0140.00017.46
7.2.340.0160.00316.27
7.2.330.0150.00316.45
7.2.320.0120.00816.52
7.2.310.0060.01216.53
7.2.300.0090.00816.51
7.2.290.0130.00816.63
7.2.280.0130.00516.56
7.2.270.0130.00416.27
7.2.260.0190.00016.43
7.2.250.0130.00515.76
7.2.240.0080.00915.73
7.2.230.0170.00215.75
7.2.220.0120.00515.58
7.2.210.0110.00615.55
7.2.200.0110.00415.81
7.2.190.0110.00715.91
7.2.180.0110.00515.71
7.2.170.0120.00215.76
7.2.160.0180.00016.70
7.2.150.0090.00918.41
7.2.140.0140.00418.49
7.2.130.0130.00618.56
7.2.120.0150.00318.50
7.2.110.0180.00018.41
7.2.100.0070.01118.35
7.2.90.0580.00615.83
7.2.80.0340.00715.77
7.2.70.0440.00815.89
7.2.60.0360.00716.17
7.2.50.0520.00515.91
7.2.40.0580.00416.18
7.2.30.0460.00316.10
7.2.20.0640.00516.12
7.2.10.0500.00416.02
7.2.00.0470.00917.10
7.1.330.0140.00516.53
7.1.320.0120.00416.57
7.1.310.0140.00216.56
7.1.300.0100.00416.55
7.1.290.0110.00216.65
7.1.280.0090.00416.46
7.1.270.0120.00516.54
7.1.260.0100.00716.52
7.1.250.0090.00917.31
7.1.240.0150.00317.31
7.1.230.0170.00317.38
7.1.220.0180.00017.21
7.1.210.0450.00614.93
7.1.200.0350.00715.07
7.1.190.0410.00414.88
7.1.180.0470.00614.92
7.1.170.0350.00314.96
7.1.160.0520.00414.79
7.1.150.0270.00914.92
7.1.140.0500.00914.70
7.1.130.0540.00414.84
7.1.120.0310.00814.96
7.1.110.0450.00615.00
7.1.100.0410.00815.63
7.1.90.0500.00214.97
7.1.80.0490.00614.90
7.1.70.0300.00515.31
7.1.60.0340.00424.45
7.1.50.0420.00924.34
7.1.40.0310.01024.28
7.1.30.0580.00724.42
7.1.20.0290.00924.38
7.1.10.0290.00415.28
7.1.00.0210.00615.36
7.0.330.0110.00616.86
7.0.320.0150.00117.06
7.0.310.0340.00714.62
7.0.300.0450.00414.44
7.0.290.0440.00514.72
7.0.280.0360.00814.58
7.0.270.0530.00714.58
7.0.260.0460.00714.68
7.0.250.0620.00714.79
7.0.240.0620.00614.80
7.0.230.0600.00514.75
7.0.220.0570.01214.81
7.0.210.0480.00514.64
7.0.200.0320.00515.14
7.0.190.0450.00415.27
7.0.180.0400.00715.13
7.0.170.0310.00615.04
7.0.160.0240.00615.10
7.0.150.0340.00715.09
7.0.140.0450.00415.17
7.0.130.0420.00915.17
7.0.120.0380.00715.22
7.0.110.0430.00615.07
7.0.100.0420.00615.18
7.0.90.0370.01014.95
7.0.80.0280.00815.16
7.0.70.0420.00914.96
7.0.60.0360.00815.05
7.0.50.0420.00515.15
7.0.40.0440.00414.81
7.0.30.0500.00714.81
7.0.20.0380.00714.73
7.0.10.0380.00714.74
7.0.00.0440.00614.71
5.6.400.0090.00915.76
5.6.390.0180.00015.72
5.6.380.0150.00615.99
5.6.370.0090.00915.96
5.6.360.0120.00515.72
5.6.350.0080.00815.85
5.6.340.0130.00315.79
5.6.330.0160.00015.89
5.6.320.0070.01015.91
5.6.310.0080.00815.75
5.6.300.0100.01716.27
5.6.290.0100.01816.46
5.6.280.0100.01416.54
5.6.270.0140.01216.37
5.6.260.0120.01716.42
5.6.250.0100.01616.48
5.6.240.0130.01316.42
5.6.230.0110.02416.44
5.6.220.0110.01716.43
5.6.210.0130.01816.48
5.6.200.0120.02516.56
5.6.190.0100.02116.40
5.6.180.0130.01616.55
5.6.170.0100.01616.47
5.6.160.0110.02616.38
5.6.150.0120.02516.34
5.6.140.0110.01816.51
5.6.130.0110.01616.51
5.6.120.0090.01716.35
5.6.110.0110.01716.40
5.6.100.0090.01816.42
5.6.90.0110.01816.32
5.6.80.0100.02616.15
5.6.70.0090.01616.14
5.6.60.0180.01316.31
5.6.50.0130.01416.22
5.6.40.0140.01216.24
5.6.30.0140.01216.17
5.6.20.0090.01616.23
5.6.10.0120.01516.14
5.6.00.0140.01516.21
5.5.380.0090.01414.12
5.5.370.0090.02013.98
5.5.360.0080.01514.05
5.5.350.0090.01713.96
5.5.340.0060.01714.11
5.5.330.0090.01514.17
5.5.320.0110.01314.24
5.5.310.0140.01014.20
5.5.300.0090.01414.14
5.5.290.0100.01414.03
5.5.280.0060.01814.17
5.5.270.0100.01314.10
5.5.260.0110.01214.07
5.5.250.0130.01214.15
5.5.240.0100.01313.90
5.5.230.0110.01414.00
5.5.220.0090.01613.79
5.5.210.0100.01413.92
5.5.200.0100.01413.84
5.5.190.0200.01413.80
5.5.180.0120.01113.78
5.5.170.0140.00414.76
5.5.160.0120.01213.99
5.5.150.0100.01413.83
5.5.140.0110.01413.88
5.5.130.0110.01413.79
5.5.120.0090.01513.80
5.5.110.0120.01313.65
5.5.100.0090.01613.82
5.5.90.0100.01313.95
5.5.80.0070.01513.92
5.5.70.0060.01713.90
5.5.60.0070.01513.86
5.5.50.0080.01513.86
5.5.40.0070.01613.83
5.5.30.0100.01113.93
5.5.20.0070.01513.99
5.5.10.0080.01513.88
5.5.00.0060.01713.90

preferences:
44.42 ms | 400 KiB | 5 Q