data = array(); } function add($id,$position,$name,$connected_id) { $this->data[$id][$connected_id] = $name; } function show() { foreach($this->data as $key => $elem) { foreach($elem as $id => $value) { if($id == 0) { // $output[$key] = "".$value.""; } else { // $output[$id] = $value; } } } } } $tree = new tree(); $tree->add(1,0,"menu1",0); $tree->add(2,1,"sub_menu2",1); $tree->add(3,0,"sub_menu3",2); $tree->add(4,0,"menu3",0); $tree->add(5,0,"menu4",0); $tree->add(6,0,"sub_menu4",2); $tree->show(); ?> I still cant do it =\.. Ive looked your example f00li5h but hmm wtf.. This should output: 1) menu1 -- sub_menu2 -- sub_menu3 -- sub_menu4 4) menu3 5) menu4 What you suggest?