$array=Array( 0 => Array("id" => 329, "parent" => -1,"name" => "web", "user_id" => 3 ), 1 => Array("id" => 330, "parent" => 329, "name" => "php","user_id" => 3), 2 => Array("id" => 336,"parent" => 329,"name" => "nginx","user_id" => 3), 3 => Array("id" => 337,"parent" => 330,"name" => "apache","user_id" => 3), 4 => Array("id" => 338,"parent" => 336,"name" => "httpd", "user_id" => 3), 5 => Array("id" => 339,"parent" => 336,"name" => "httpd","user_id" => 3), 6 => Array("id" => 340,"parent" => 329,"name" => "httpd", "user_id" => 3), 7 => Array("id" => 341,"parent" => 329,"name" => "httpd", "user_id" => 3), 8 => Array("id" => 342,"parent" => -1,"name" => "httpd", "user_id" => 3), 9 => Array("id" => 343,"parent" => 329,"name" => "httpd", "user_id" => 3), 10 => Array("id" => 344,"parent" => 329,"name" => "httpd", "user_id" => 3), 14 => Array("id" => 348,"parent" => 329,"name" => "httpd", "user_id" => 3), 15 => Array("id" => 349,"parent" => -1,"name" => "httpd", "user_id" => 3), 100 => Array("id" => 3444,"parent" => 329,"name" => "httpd", "user_id" => 3) ); function tree($array=null,$tid=null,$tpid=null,$tname=null,$pid=-1) { $str=""; foreach($array as $key=>$value) { if($value[$tpid]==$pid) { unset($array[$key]); $str.="
".$value[$tname]. tree($array,$tid,$tpid,$tname,$value[$tid]).""; } } return $str ? "- $str