3v4l.org

run code in 200+ php & hhvm versions
Bugs & Features
<?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(); $target = array( array(9,4,'Esel 2.2.1', 3, 0), ); var_dump($result == $target); $navitems = array( array( 1, // Menuid 3, // parentid 'Wurm 1.1', // title 2, // level 10 // sortid ), array( 2, // Menuid 6, // parentid 'Vogel 2.1', // title 2, // level 30 // sortid ), array( 3, // Menuid 0, // parentid 'Tiger 1', // title 1, // level 10 // sortid ), array( 4, // Menuid 6, // parentid 'Hund 2.2', // title 2, // level 40 // sortid ), array( 5, // Menuid 3, // parentid 'Katze 1.2', // title 2, // level 11 // sortid ), array( 6, // Menuid 0, // parentid 'Pferd 2', // title 1, // level 20 // sortid ), array( 7, // Menuid 1, // parentid 'Baer 1.1.1', // title 3, // level 0 // sortid ), array( 8, // Menuid 3, // parentid 'Schwein 1.3', // title 2, // level 12 // sortid ), array( 9, // Menuid 4, // parentid 'Esel 2.2.1', // title 3, // level 0 // sortid ) ); function array_orderby() { $args = func_get_args(); $data = array_shift($args); foreach ($args as $n => $field) { if (is_string($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 listItems($items, $level=0, $child=false, $pid=0) { array_orderby($items, 'sortid'); $rest = ''; foreach($items as $item) { if ($item[3] != $level) { continue; } if ($child == false) { $rest .= '<li>'. $item[2] .'<ul>'. listItems($items, $level+1, true, $item[0]) .'</ul></li>'; } else { if ($pid == $item[1]) { $rest .= '<li>'. $item[2] .'<ul>'. listItems($items, $level+1, true, $item[0]) .'</ul></li>'; } } } return '<ul>' . $rest . '</ul>'; } echo listItems($navitems);
based on eHESA
Output for 5.3.4 - 7.2.0
bool(false) Notice: Undefined index: sortid in /in/bJ2V8 on line 102 Notice: Undefined index: sortid in /in/bJ2V8 on line 102 Notice: Undefined index: sortid in /in/bJ2V8 on line 102 Notice: Undefined index: sortid in /in/bJ2V8 on line 102 Notice: Undefined index: sortid in /in/bJ2V8 on line 102 Notice: Undefined index: sortid in /in/bJ2V8 on line 102 Notice: Undefined index: sortid in /in/bJ2V8 on line 102 Notice: Undefined index: sortid in /in/bJ2V8 on line 102 Notice: Undefined index: sortid in /in/bJ2V8 on line 102 <ul></ul>
Output for 5.3.0 - 5.3.3
bool(false) Notice: Undefined index: sortid in /in/bJ2V8 on line 102 Notice: Undefined index: sortid in /in/bJ2V8 on line 102 Notice: Undefined index: sortid in /in/bJ2V8 on line 102 Notice: Undefined index: sortid in /in/bJ2V8 on line 102 Notice: Undefined index: sortid in /in/bJ2V8 on line 102 Notice: Undefined index: sortid in /in/bJ2V8 on line 102 Notice: Undefined index: sortid in /in/bJ2V8 on line 102 Notice: Undefined index: sortid in /in/bJ2V8 on line 102 Notice: Undefined index: sortid in /in/bJ2V8 on line 102 Warning: Parameter 1 to array_multisort() expected to be a reference, value given in /in/bJ2V8 on line 109 <ul></ul>
Output for 4.3.0 - 5.2.17
bool(false) Notice: Undefined index: sortid in /in/bJ2V8 on line 102 Notice: Undefined index: sortid in /in/bJ2V8 on line 102 Notice: Undefined index: sortid in /in/bJ2V8 on line 102 Notice: Undefined index: sortid in /in/bJ2V8 on line 102 Notice: Undefined index: sortid in /in/bJ2V8 on line 102 Notice: Undefined index: sortid in /in/bJ2V8 on line 102 Notice: Undefined index: sortid in /in/bJ2V8 on line 102 Notice: Undefined index: sortid in /in/bJ2V8 on line 102 Notice: Undefined index: sortid in /in/bJ2V8 on line 102 <ul></ul>