您现在的位置是:网站首页> 编程资料编程资料
php菜单/评论数据递归分级算法的实现方法_php实例_
2023-05-25
747人已围观
简介 php菜单/评论数据递归分级算法的实现方法_php实例_
在开发过程中经常会遇到分级场景,如菜单分级、评论、商品类型分级等;在同一张mysql数据表中可能设计单表结构,如同如下数据:
$menuList = [ [ 'id' => 1,'parent_id' => 0, 'name' => '节点1'], [ 'id' => 2,'parent_id' => 1, 'name' => '节点1-1'], [ 'id' => 3,'parent_id' => 0, 'name' => '节点2'], [ 'id' => 4,'parent_id' => 3, 'name' => '节点2-1'], [ 'id' => 5,'parent_id' => 2, 'name' => '节点1-1-1'], [ 'id' => 6,'parent_id' => 1, 'name' => '节点1-2'], ];
这时候在处理展示过程就需要将上面的结构转换为更加直观的数据结构, 形如:
$treeList = [ [ children: [ children: [] ] ] [, children: [ children: [] ] ] ];
算法代码如下:
$menu) { if ($menu['parent_id'] == 0) { $treeList[] = $menu; unset($menuList[$index]); } } } // 递归查找子节点 foreach ($treeList as &$tree) { foreach ($menuList as $index => $menu) { if (empty($tree['children'])) { $tree['children'] = []; } if ($menu['parent_id'] == $tree['id']) { $tree['children'][] = $menu; unset($menuList[$index]); } } if (! empty($tree['children'])) { $this->getMenuTree($tree['children'], $menuList); } else { // 递归临界点 return false; } } } } $menuList = [ [ 'id' => 1,'parent_id' => 0, 'name' => '节点1'], [ 'id' => 2,'parent_id' => 1, 'name' => '节点1-1'], [ 'id' => 3,'parent_id' => 0, 'name' => '节点2'], [ 'id' => 4,'parent_id' => 3, 'name' => '节点2-1'], [ 'id' => 5,'parent_id' => 2, 'name' => '节点1-1-1'], [ 'id' => 6,'parent_id' => 1, 'name' => '节点1-2'], ]; $treeList = []; (new Menu)->getMenuTree($treeList, $menuList); print_r($treeList);happy coding!
每一个不曾起舞的日子,都是对生命的辜负 ^-^
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对的支持。
您可能感兴趣的文章:
相关内容
- PHP实现微信提现(企业付款到零钱)_php实例_
- php curl发送请求实例方法_php技巧_
- php layui实现前端多图上传实例_php实例_
- 安装docker和docker-compose实例详解_php实例_
- docker-compose部署php项目实例详解_php实例_
- php 使用mpdf实现指定字段配置字体样式的方法_php实例_
- laradock环境docker-compose操作详解_php实例_
- php 根据URL下载远程图片、压缩包、pdf等文件到本地_php实例_
- php 根据URL下载远程图片、压缩包、pdf等文件到本地_php实例_
- PHP中散列密码的安全性分析_php技巧_
