无限树型简约版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>"; ?>