博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
php无限极分类设计,递归方式已经淘汰了
阅读量:4147 次
发布时间:2019-05-25

本文共 768 字,大约阅读时间需要 2 分钟。

相信很多朋友在做项目都会遇到获取不同级别分类的问题,今天给大家分享一个代码,希望能够帮助到大家,大家有更好的方式也可以分享分享,一起研究研究,不喜勿喷!

表设计:id(自身ID),pid(父级ID)

/**     * tree 子菜单     * @param $data     * @param str $childrenname 子栏目索引名称     * @return array     */    function get_tree_children($data, $childrenname = 'children')    {
$list = array(); foreach($data as $value){
$list[$value['id']] = $value; } static $tree = array(); //格式化好的树 foreach ($list as $item){
//有父级ID的 if (isset($list[$item['pid']])){
$list[$item['pid']][$childrenname][] = &$list[$item['id']]; } else{
$tree[] = &$list[$item['id']]; } } return $tree; }

这个是来自CEMEB系统封装的方法,感觉效率挺高,比递归效率高太多了

转载地址:http://lsiti.baihongyu.com/

你可能感兴趣的文章
MySQL索引相关内容汇总
查看>>
MySQL数据库事务的特性和隔离级别
查看>>
数据库引擎对比InnerDB和MYISAM
查看>>
MySQL当中基于索引的加锁和死锁问题
查看>>
MySQL语句执行优化及分页查询优化,分库分表(一)
查看>>
分库分表需要解决的问题(二)
查看>>
设计模式——单例模式
查看>>
设计模式——命令模式(附框架源码实现)
查看>>
设计模式——装饰器模式(附java源码案例)
查看>>
设计模式——观察者模式
查看>>
设计模式——状态模式
查看>>
设计模式——代理模式之动态代理源码分析JDK1.8(一)
查看>>
设计模式——代理模式之CGLib实现分析JDK1.8(二)
查看>>
MyBatis启动流程源码分析
查看>>
MyBatis缓存实现源码分析
查看>>
Spring中bean的生命周期
查看>>
Spring框架面试题
查看>>
分布式缓存数据库面试题redis
查看>>
Redis持久化方案RDB和AOF
查看>>
Redis当中的事务
查看>>