<?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 flatten($arr) {
global $result;
foreach($arr as $r) {
if(isset($r["r"])) {
$x = $r["r"];
unset($r["r"]);
$result[] = $r;
flatten($x);
} else {
$result[] = $r;
}
}
}
$tmp = array();
foreach($menu as &$m) {
$id = $m[0];
$ref = $m[1];
$m["r"] = array_filter($menu, function($item) use ($id) {
return $item[1] == $id;
});
if(sizeof($m["r"]) == 0) unset($m["r"]);
if($ref == 0) {
$tmp[] = $m;
}
}
flatten($tmp);
$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);
preferences:
46.13 ms | 402 KiB | 5 Q