米
心情
所有
图集
登录
搜索
原创
PHP根据pid递归计算出path
米醋儿
发布于:2023-03-02
推荐使用第二版 ### 第一版 使用场景:新增一个数据的时候 ```php public function getPath($id,$path=[]) { $db = Db::name('document_relation'); $res = $db->find($id); if ($res && $res["pid"] > 0){ array_push($path,$res['pid']); return $this->getPath($res['pid'],$path); }else{ return $path; } } ``` 这一版主要思路理清晰了,递归也走通了,但是代码还有很大的优化空间,因为我们每递归一次就需要请求一次数据库,这个消耗是巨大的。 第一版使用方法 ```php $this->getPath(1000,[]); ``` ### 第二版 使用场景:统一跑脚本任务的时候 ```php /** * @param $item array 当前需要计算的 * @param $path array 计算后得到的path * @param $arr array 总数组 * @return array|mixed * @Time: 2023/3/2 12:01 */ public function getPath(array $item,$path=[],$arr) { foreach ($arr as $m) { if ($m['id'] == $item['pid']){ array_push($path,$m['id']); return $this->getPath($m,$path,$arr); } } return $path; } ``` ### 使用 这里是第二版的使用方式 ```php $list = DocumentRelation::where(1) ->select()->toArray(); foreach ($list as $k => &$v){ $res = $this->getPath($v,[],$list); $v['path'] = implode(',',array_reverse($res)); } p($list);die; ```
注:原创不易,转载请注明出处(
https://micuu.com/new/3337.html
),本站所有资源来源于网络收集,如有侵权请联系QQ245557979进行清除。
最后修改与 2023-03-02
上一篇:
中国最长的20条高速公路(你走过几条?)
下一篇:
大美西藏109国道雪景太美了啊
留言反馈
请先登录
问题反馈渠道,如有软件无法下载或者其他问题可反馈。【由于某种原因,目前留言不展示】
用户需要登录后才能留言反馈
立即留言
珍藏视频
10分钟高效燃脂
30天高效瘦脸操
5分钟缓解颈椎操
友人
微博
全民K歌
唱吧
今日头条
悠悠网
科技小锅盖
彼岸桌面
阮一峰
laravel社区
V2ex
掘金
更多>