1 $res =Db::name('trees')->select();
2 $list= $this->getTree($res);
3 // 目录 树形
4 function getTree($arr,$pid=0,$level=0)
5 {
6 $list =array();
7 foreach ($arr as $k=>$v){
8 if ($v['pid'] == $pid){
9 $v['level']=$level;
10 $child=$this->getTree($arr,$v['id'],$level+1);
11 if(count($child)){
12 $v['leaf'] = false; //是否子节点
13 $v['child'] = $child;
14 }else{
15 $v['leaf'] = true;
16 }
17 $list[] = $v;
18 }
19 }
20 return $list;
21 }
22
23 // ──a
24 // ───aa
25 // ──b
26 // ───bb
27 private function GetTreeList($arr, $pid=0, $level=0)
28 {
29 global $tree;
30 foreach ($arr as $key => $val) {
31 if ($val['pid'] == $pid) {
32 $flg = str_repeat('─', $level); // →
33 $val['name'] = $flg . $val['name'];
34 $tree[] = $val;
35 $this->GetTreeList($arr, $val['id'], $level + 1);
36
37 }
38
39 }
40 return $tree;
41 }
42 -- --------------------------------------------------------
43
44 DELETE FROM `trees`;
45 INSERT INTO `trees` (`id`, `pid`, `name`) VALUES
46 (1, 0, '中国'),
47 (2, 0, '美国'),
48 (3, 0, '日本'),
49 (4, 1, '北京'),
50 (5, 1, '上海'),
51 (6, 1, '广州'),
52 (7, 2, '华盛顿'),
53 (8, 2, '纽约'),
54 (9, 3, '东京'),
55 (10, 3, '广岛'),
56 (11, 4, '朝阳区'),
57 (12, 4, '海淀区'),
58 (13, 5, '静安'),
59 (14, 5, '新界'),
60 (15, 14, '新界A');