@ 2015-07-23T14:49:55Z <?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.20 , 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.28 , 8.2.0 - 8.2.19 , 8.3.0 - 8.3.7 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/5ANUC on line 28
Warning: Parameter 1 to array_multisort() expected to be a reference, value given in /in/5ANUC on line 28
Warning: Parameter 1 to array_multisort() expected to be a reference, value given in /in/5ANUC on line 28
Warning: Parameter 1 to array_multisort() expected to be a reference, value given in /in/5ANUC on line 28
Warning: Parameter 1 to array_multisort() expected to be a reference, value given in /in/5ANUC on line 28
bool(true)
preferences:dark mode live preview
208.31 ms | 402 KiB | 315 Q