PHP生成结构图形状的分类要怎么写
比如这种结构
但是我最多只能做到下面这个
福
├─a2
│ ├─a3
│ │ ├─a4
b1
├─b2
下面是我的代码。 求大神指导
$data=array(
['cid' => 1, 'pid' => 0,'name'=>'福'],
['cid' => 2, 'pid' => 1,'name'=>'a2'],
['cid' => 3, 'pid' => 2,'name'=>'a3'],
['cid' => 4, 'pid' => 3,'name'=>'a4'],
['cid' => 9, 'pid' => 0,'name'=>'b1'],
['cid' => 10, 'pid' => 9,'name'=>'b2']
);
class Tree{
static public function SortTree($data, $pid = 0, $level=0, $icon = array(' ├─', ' └─',' │'))
{
$arr=[];
if(!is_array($data) || empty($data)) return array();
foreach ($data as $k=>$v) {
$v['level']= $level+1;
if ($v['pid'] == $pid) {
$str='';
if($v['level']>2){
$str=str_repeat($icon[2], $v['level']-2);
}
#start 填充
if($v['pid']== 0){
$v[$k]['html']='';
}else{
$v[$k]['html'] = $str . $icon[0];
}
$arr[] =$v;
$arr = array_merge($arr, self::SortTree($data, $v['cid'], $level + 1));
}
}
return $arr;
}
}
$tree=new Tree();
$a=$tree->SortTree($data);
foreach ($a as $k=>$v){
echo $v[$k]['html'].$v['name'].'<br>';
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
最后最近勉强解决了,如果哪里有问题,欢迎大神帮我指导修正。
最终结果:
a1 ---level:1
├─a2 ---level:2
│ ├─a3 ---level:3
│ └─a4 ---level:3
a5 ---level:1
├─a6 ---level:2
│ ├─a7 ---level:3
│ │ ├─a8 ---level:4
│ │ │ ├─a10 ---level:5
│ │ │ │ ├─11 ---level:6
│ │ │ │ │ ├─12 ---level:7
│ │ │ │ │ │ ├─13 ---level:8
│ │ │ │ │ │ │ ├─14 ---level:9
│ │ │ │ │ │ │ │ ├─15 ---level:10
│ │ │ │ │ │ │ │ │ └─16 ---level:11
│ │ └─a9 ---level:4
祝大家 五福临门,新年快乐!