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

百度提供的广告:
PHP
当前位置:首页 > 技术文档 > PHP >  > 
无限树型简约版Tree
<?php
/**
 * 生成树型
 * @param 数据源 $arr
 * @param 父级ID $parentid
 * @param 深度(不用设置) $depth
 */
function Tree($arr = array(),$parentid = 0,$depth = 0)
{
    $node = array();    
    foreach ($arr as $_v)
    {
        if($parentid == $_v['parentid'])
        {
            $row = $_v;
            $row['depth'] = $depth;
            $node[] = $row;            
            $subNode = Tree($arr,$_v['id'],$depth+1);
            $node = array_merge($node,$subNode);
        }
    }
    return $node;
}
//测试用数据
$arr = array(
    array('id'=>1,'parentid'=>0,'name'=>'新闻'),
    array('id'=>5,'parentid'=>0,'name'=>'图片'),
    array('id'=>2,'parentid'=>1,'name'=>'国内新闻'),
    array('id'=>4,'parentid'=>2,'name'=>'上海新闻'),
    array('id'=>3,'parentid'=>2,'name'=>'北京新闻'),
    array('id'=>6,'parentid'=>5,'name'=>'美景'),
    array('id'=>7,'parentid'=>6,'name'=>'大海'),
    array('id'=>8,'parentid'=>6,'name'=>'天空'),
);

$arr = Tree($arr);
//输出结果
?>
<?php echo "<select>";
foreach ($arr as $_v)
{
    $flag = '';
    if(0<$_v['depth'])
    {
        $flag = '|';
    }
    for($i=0;$i<$_v['depth'];$i++)
    {
        $flag.= '-';
    }
    echo '<option>'.$flag.$_v['name'].'</option>';
}
?>
<?php echo "</select>"; ?>