php+树状结构图,PHP生成结构图形状的分类要怎么写

php+树状结构图,PHP生成结构图形状的分类要怎么写classTree{staticpublicfunctionSortTree($data,$pid=0,$level=0,$icon=array(‘ ├─’,’ └─’,’ │’)){$str=””;$arr=[];i

class Tree{

static public function SortTree($data, $pid = 0, $level=0, $icon = array(‘ ├─’, ‘ └─’,’ │’))

{

$str=””;$arr=[];

if(empty($data)) return array();

foreach ($data as $k=>$v) {

if ($v[‘pid’] == $pid) {

$v[‘level’]= $level+1;

if($v[‘level’]>2){

$str=str_repeat($icon[2], $v[‘level’]-2);

}

if($v[‘pid’]== 0){

$v[‘html’]=”;

}else{

$v[‘html’]= $str . $icon[0];

}

$arr[] =$v;

$arr = array_merge($arr, self::SortTree($data, $v[‘cid’], $level + 1));

}

}

return $arr;

}

static public function getTree($data,$icon = array(‘ ├─’, ‘ └─’,’ │’)){

if(!is_array($data) || empty($data)) return array();

$arr = self::SortTree($data, $pid = 0, $level=0, $icon = array(‘ ├─’, ‘ └─’,’ │’));

foreach ($arr as $k => $v) {

$str = “”;

if ($v[‘level’] > 2) {

for ($i = 1; $i < $v[‘level’] – 1; $i++) {

$str .= “ │”;

}

}

if($v[‘level’]!=1){

if (isset($arr[$k + 1]) && $arr[$k + 1][‘level’] >= $arr[$k][‘level’]) {

$arr[$k][‘html’] =$str . $icon[0];

} else {

$arr[$k][‘html’] = $str . $icon[1];

}

}else{

$arr[$k][‘html’] = $v[‘html’];

}

}

return $arr;

}

}

$data=array(

[‘cid’ => 1, ‘pid’ => 0,’name’=>’a1′],

[‘cid’ => 2, ‘pid’ => 1,’name’=>’a2′],

[‘cid’ => 3, ‘pid’ => 2,’name’=>’a3′],

[‘cid’ => 4, ‘pid’ => 2,’name’=>’a4′],

[‘cid’ => 5, ‘pid’ => 0,’name’=>’a5′],

[‘cid’ => 6, ‘pid’ => 5,’name’=>’a6′],

[‘cid’ => 7, ‘pid’ => 6,’name’=>’a7′],

[‘cid’ => 8, ‘pid’ => 7,’name’=>’a8′],

[‘cid’ => 9, ‘pid’ => 7,’name’=>’a9′],

[‘cid’ => 10, ‘pid’ => 8,’name’=>’a10′],

[‘cid’ => 11, ‘pid’ => 10,’name’=>’11’],

[‘cid’ => 12, ‘pid’ => 11,’name’=>’12’],

[‘cid’ => 13, ‘pid’ => 12,’name’=>’13’],

[‘cid’ => 14, ‘pid’ => 13,’name’=>’14’],

[‘cid’ => 15, ‘pid’ => 14,’name’=>’15’],

[‘cid’ => 16, ‘pid’ => 15,’name’=>’16’],

);

$tree=new Tree();

$a=$tree->getTree($data);

foreach ($a as $k=>$v){

echo $v[‘html’].$v[‘name’].’ —level:’.$v[‘level’].’
‘;

}

最后最近勉强解决了,如果哪里有问题,欢迎大神帮我指导修正。

最终结果:

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

祝大家 五福临门,新年快乐!

今天的文章php+树状结构图,PHP生成结构图形状的分类要怎么写分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:http://bianchenghao.cn/60327.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注