一个无限极分类问题

一个无限极分类问题:不知道怎么生成树状图!
刚学php不久,搞了半天也没弄出来!
有没有大虾能帮个忙,把下面的代码修改下,让它直接生成树状图!

[复制到剪切板]
CODE:
<?php
header
('content-type:text/html; charset=utf-8');
$ar = array(  
                array(
'id'=>1,'parent_id'=>0,'sort_name' => 'A'),  
                array(
'id'=>2,'parent_id'=>0,'sort_name' => 'B'),  
                array(
'id'=>3,'parent_id'=>0,'sort_name' => 'C'),  
                array(
'id'=>4,'parent_id'=>6,'sort_name' => 'D'),  
                array(
'id'=>5,'parent_id'=>4,'sort_name' => 'E'),  
                array(
'id'=>6,'parent_id'=>3,'sort_name' => 'F')  
);  


$rangeclass getChilds(0$ar);
echo 
"<pre>";
print_r(getTreeArr(0$rangeclass));
echo 
"</pre>";

function 
getChilds($parent_id$cats){
       
        
$rangeCats = array();
        
$tmpArr $cats;
        
$record count($tmpArr);
        
$s 0;
        
$t 0;

    while(
true){
        
$find false;
        foreach(
$tmpArr as $key => $val){
            if(
$val["parent_id"] == $parent_id){
                
$rangeCats[$s]["parent_id"] = $parent_id;
                
$rangeCats[$s]["id"] = $val["id"];
                
$rangeCats[$s]["sort_name"] = $val["sort_name"];

                
$s++;

                
$parent_id $val["id"];
                unset(
$tmpArr[$key]);
                
$find true;
                break;
            }
        }

        if(
$find == false){
            
reset($tmpArr);
            
$t $s 1;
            
$find2 false;

            while(
$t >= 0){
                foreach(
$tmpArr as $key2 => $val2){
                    if(
$val2["parent_id"] == $rangeCats[$t]["parent_id"]){
                        
$parent_id $val2["parent_id"];
                        
$find2 true;
                        break;
                    }
                }

                if(
$find2 == true){
                    break;
                }
                
$t--;
            }

            if(
$find2 == false){
                break;
            }
        }

        if(
$s == $record){
            break;
        }
    }
    return 
$rangeCats;   
}



function 
getTreeArr($parent_id$cats){
    
$tmpArr = array();
    
$indexArr = array();
    foreach(
$cats as $k => $v){
        
$v["child"] = array();
        if(
$v["parent_id"] == $parent_id){
            
$i count($tmpArr);
               
$tmpArr[$i] = $v;
               
$indexArr[$v["id"]] =& $tmpArr[$i];
        }else{
            
$i count($indexArr[$v["parent_id"]]["child"]);
               
$indexArr[$v["parent_id"]]["child"][$i] = $v;
               
$indexArr[$v["id"]] =& $indexArr[$v["parent_id"]]["child"][$i];
        }
    }
    return 
$tmpArr;
} ;