@ 2015-07-23T14:44:44Z <?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);
Enable javascript to submit You have javascript disabled. You will not be able to edit any code.
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:dark mode live preview
229.23 ms | 402 KiB | 305 Q