重新排版
此投稿已在 4年前 合并。
内容修改:
Old | New | Differences |
---|---|---|
1 | 1 | # 无限递归 |
2 | >其中pid的所属父级的id | |
3 | <pre> | |
4 | 1.第一种 | |
5 | public function getcatebypid($pid){ | |
6 | $data=Db::table("cates")->where("pid",$pid)->select(); | |
7 | $data1=[]; | |
8 | //遍历 递归 | |
9 | foreach($data as $key=>$value){ | |
10 | $value['shop']=$this->getcatebypid($value['id']); | |
11 | $data1[]=$value; | |
12 | } | |
13 | return $data1; | |
14 | } | |
15 | 调用 | |
16 | $this->getcatebypid(0); | |
17 | </pre> | |
18 | <pre> | |
19 | 2.第二种 | |
20 | function getList($brr,$pid=0,&$arr=[],$level=1){ | |
21 | foreach ($brr as $v){ | |
22 | if ($v['pid']==$pid) { | |
23 | $v['level']=$level; | |
24 | $arr[]=$v; | |
25 | getList($brr,$v['id'],$arr,$level+1); | |
26 | } | |
27 | } | |
28 | return $arr; | |
2 | ||
3 | 其中 pid 的所属父级的 id | |
4 | ||
5 | #### 1.第一种 | |
6 | ``` | |
7 | public function getcatebypid($pid) | |
8 | { | |
9 | $data = Db::table("cates")->where("pid", $pid)->select(); | |
10 | $res = []; | |
11 | //遍历 递归 | |
12 | foreach ($data as $key => $value) { | |
13 | // 代码段:核心点 | |
14 | $value['shop'] = $this->getcatebypid($value['id']); | |
15 | $res[] = $value; | |
16 | } | |
17 | return $res; | |
18 | } | |
19 | ``` | |
20 | 调用` $this->getcatebypid(0);` | |
21 | ||
22 | #### 2.第二种 | |
23 | ||
24 | ```php | |
25 | function getList($brr, $pid = 0, &$arr = [], $level = 1) | |
26 | { | |
27 | foreach ($brr as $v) { | |
28 | if ($v['pid'] == $pid) { | |
29 | $v['level'] = $level; | |
30 | $arr[] = $v; | |
31 | getList($brr, $v['id'], $arr, $level + 1); | |
32 | } | |
33 | } | |
34 | return $arr; | |
29 | 35 | } |
30 | 调用 | |
31 | getList(db("user)->select(),$user['role_id']); | |
32 | </pre> | |
36 | ``` | |
37 | 调用`getList(db("user)->select(),$user['role_id']);` | |
33 | 38 | |
34 | >页面处理 | |
35 | {:str_repeat('|——',$vo.level)}{$vo.name} 适用于第二种方法 | |
39 | 页面处理`{:str_repeat('|——',$vo.level)}{$vo.name}` 适用于第二种方法 |