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 $result = array(); function array_orderby() { $args = func_get_args(); $data = array_shift($args); foreach ($args as $n => $field) { $tmp = array(); foreach ($data as $key => $row) $tmp[$key] = $row[$field]; $args[$n] = $tmp; } $args[] = &$data; call_user_func_array('array_multisort', $args); return array_pop($args); } function byTopId($items,$id) { $return = array(); foreach($items as $item) { if($item[1] == $id) { $return[] = $item; } } if(count($return) > 0) { $return = array_orderby($return,4); } return $return; } function sortMenu($menu,$topid,&$return) { $items = byTopId($menu,$topid); foreach($items as $item) { $return[] = $item; sortMenu($menu,$item[0],$return); } } $result = array(); sortMenu($menu,0,$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);
Output for 4.3.0 - 4.3.11, 4.4.0 - 4.4.9, 5.0.0 - 5.0.5, 5.1.0 - 5.1.6, 5.2.0 - 5.2.17, 5.3.4 - 5.3.29, 5.4.0 - 5.4.45, 5.5.24 - 5.5.35, 5.6.8 - 5.6.28, 7.0.0 - 7.0.20, 7.1.0 - 7.1.10, 7.2.0 - 7.2.33, 7.3.16 - 7.3.33, 7.4.0 - 7.4.33, 8.0.0 - 8.0.30, 8.1.0 - 8.1.27, 8.2.0 - 8.2.17, 8.3.0 - 8.3.4
bool(true)
Output for 5.3.0 - 5.3.3
Warning: Parameter 1 to array_multisort() expected to be a reference, value given in /in/YqCfD on line 29 Warning: Parameter 1 to array_multisort() expected to be a reference, value given in /in/YqCfD on line 29 Warning: Parameter 1 to array_multisort() expected to be a reference, value given in /in/YqCfD on line 29 Warning: Parameter 1 to array_multisort() expected to be a reference, value given in /in/YqCfD on line 29 Warning: Parameter 1 to array_multisort() expected to be a reference, value given in /in/YqCfD on line 29 bool(true)

preferences:
229.23 ms | 402 KiB | 305 Q