专注于高品质PHP技术等信息服务于一体 [STIEMAP] [RSS]

百度提供的广告:
PHP
当前位置:首页 > 技术文档 > PHP >  > 
php无限树形代码

<?php

$addr[] = array('id'=>1,'pid'=>0,'name'=>'北京');
$addr[] = array('id'=>2,'pid'=>0,'name'=>'河北');
$addr[] = array('id'=>3,'pid'=>2,'name'=>'保定');
$addr[] = array('id'=>4,'pid'=>2,'name'=>'石家庄');
$addr[] = array('id'=>5,'pid'=>4,'name'=>'南焦');
$addr[] = array('id'=>6,'pid'=>4,'name'=>'太和电子城');
$addr[] = array('id'=>7,'pid'=>0,'name'=>'上海');

//递归查找层级
function div($arr,$count,$pid)
{
    if(0!=$pid){
        foreach($arr as $k=>$v)
        {
            if($pid==$v['pid'])
            {
                $count++;
                foreach($arr as $chlidV)
                {
                    if($chlidV['id']==$pid){
                        return div($arr,$count,$chlidV['pid']);
                    }
                }
               
            }
        }
        }
        return $count;
}
//树型
function tree($arr,&$newarr,$pid)
{
    foreach($arr as $k=>$v)
    {
        if($pid==$v['pid'])
        {
            //标识
            $temp = null;
            if(0!=$pid)
            {
                $newName = $v['name'];
                $count = div($arr,0,$pid);
                if($count)
                {
                    for($i=0;$i<$count;$i++)
                    {
                        $temp = (0==$i) ? '|-' : $temp.="-";   
                    }
                    $newName = $temp.$newName;
                }
                $temp = array('id'=>$v['id'],'pid'=>$v['pid'],'name'=>$newName);
            }
            else
            {
                $temp = $v;
            }
            //标识end
            array_push($newarr,$temp);
            tree($arr,$newarr,$temp['id']);
        }
    }
}

//调用输出
$newarray = array();
tree($addr,$newarray,0);

foreach($newarray as $k=>$v)
    {
        echo $v['name']."<br/>";
    }

?>