rendered paste body<?php class Channel { private $id = 0; private $name = ''; private $parent = 0; private $childs = array(); public function __construct(&$a, $id = 0, $name = '', $parent = 0){ $this->id = (int)$id; $this->name = (string)$name; $this->parent = (int)$parent; if($parent !== -1){ $a[$parent]->addChild($a[(int)$id]); } } public function addChild(&$child){ $this->childs[] = &$child; } public function getName(){ return $this->name; } public function getChilds(){ return $this->childs; } } $a[0] = ''; $a[0] = new Channel(&$a, 0, 'main', -1); $a[1] = ''; $a[1] = new Channel(&$a, 1, 'chan 1', 0); $a[2] = ''; $a[2] = new Channel(&$a, 2, 'chan 2', 0); $a[3] = ''; $a[3] = new Channel(&$a, 3, 'sub chan 1', 1); $a[4] = ''; $a[4] = new Channel(&$a, 4, 'sub chan 2', 2); $a[5] = ''; $a[5] = new Channel(&$a, 5, 'sub sub chan 1', 3); function drawTree(&$a, $p){ $puce = '-'.$p; if(gettype($a) == 'object'){ printf("%s %s<br />", $puce, $a->getName()); $tabs = $a->getChilds(); foreach($tabs AS $i => $channel){ drawTree($channel, $puce); } } } drawTree($a[0], '>');?>