3v4l.org

run code in 300+ PHP versions simultaneously
<?php $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 /* steps: 1. sort items by levelId and sortId - finished 2. get max levelId value 'x' = iterations - ...that seems to be not the way to go. better way would be recursion for each element and search for children belonging to the current menuId.... 3. ... */ $result = array(); foreach ($menu as $key => $row){ $levelId[$key] = $row[3]; $sortId[$key] = $row[4]; } array_multisort($levelId, SORT_DESC, $sortId, SORT_DESC, $menu); $levels = $menu[0][3]; echo count($menu) . " items\n"; echo $levels . " levels\n"; function getChild($list){ foreach ($list as $entry){ if ($entry[1] == $list[0]){ array_push($entry, $target); } } } getChild($menu[0]); var_dump($result); $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); //var_dump($result);
Output for 8.3.0 - 8.3.4
9 items 3 levels Warning: Trying to access array offset on int in /in/XlFsD on line 46 Warning: Trying to access array offset on int in /in/XlFsD on line 46 Warning: Trying to access array offset on int in /in/XlFsD on line 46 Warning: Trying to access array offset on int in /in/XlFsD on line 46 array(0) { }
Output for 8.0.0 - 8.0.30, 8.1.0 - 8.1.27, 8.2.0 - 8.2.17
9 items 3 levels Warning: Trying to access array offset on value of type int in /in/XlFsD on line 46 Warning: Trying to access array offset on value of type int in /in/XlFsD on line 46 Warning: Trying to access array offset on value of type int in /in/XlFsD on line 46 Warning: Trying to access array offset on value of type int in /in/XlFsD on line 46 array(0) { }
Output for 7.4.0 - 7.4.33
9 items 3 levels Notice: Trying to access array offset on value of type int in /in/XlFsD on line 46 Notice: Trying to access array offset on value of type int in /in/XlFsD on line 46 Notice: Trying to access array offset on value of type int in /in/XlFsD on line 46 Notice: Trying to access array offset on value of type int in /in/XlFsD on line 46 array(0) { }
Output for 5.6.0 - 5.6.40, 7.0.0 - 7.0.33, 7.1.0 - 7.1.33, 7.2.0 - 7.2.33, 7.3.0 - 7.3.33
9 items 3 levels array(0) { }

preferences:
197.12 ms | 402 KiB | 287 Q