3v4l.org

run code in 200+ 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 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);
based on PTuRc