首页 / PHP / PHP高效率获取树结构信息
PHP高效率获取树结构信息
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了PHP高效率获取树结构信息,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1459字,纯文字阅读大概需要3分钟。
内容图文
![PHP高效率获取树结构信息](/upload/InfoBanner/zyjiaocheng/217/01d53fefc9ec4d0a9d53357d7052b8ba.jpg)
在开发中,经常有一些简单的树形结构的存储,比如产品的多级分类,多级导航栏菜单等,这些物体有一个特性,就是通常会获取整棵树结构。在数据库里保存树结构的方法主要有三种,最简单的一就是通过一个father_id指向当前结构的父节点。对于这样的小结构,一般我们使用最简单的方式存储。
当要获取整棵树结构,网上一般用递归法,这种方式代码简单易懂,但是缺点是需要执行多次数据库查询,而且后面几次获取的元素数量很少甚至为0,效率很差。
其实,遇到这种情况,可以将所有的元素全部从数据库获取出来,然后再根据获取的元素father_id构建树结构,这样就可以解决执行多次数据库查询的性能损耗。下面就以我在实际项目中获取多级导航栏菜单中的函数进抛砖引玉了
/* 通过数据库获取所有元素,通过下面函数构造树形结构 */ private function getTree($menus) { $id = $level = 0; $menuobjs=array(); $tree = array(); $notrootmenu=array(); foreach($menus as $menu){ $menuobj=new stdClass(); $menuobj->menu=$menu; $id = $menu['id']; $level = $menu['father_id']; $menuobj->nodes = array(); $menuobjs[$id]=$menuobj; if ($level) { $notrootmenu[]=$menuobj; } else { $tree[] = $menuobj; } } foreach($notrootmenu as $menuobj){ $menu=$menuobj->menu; $id = $menu['id']; $level = $menu['father_id']; $menuobjs[$level]->nodes[]=$menuobj; } return $tree; } }
我的微博地址:http://weibo.com/jameren,欢迎大家关注,
![PHP高效率获取树结构信息 - 文章图片](/upload/getfiles/0001/2021/4/22/20210422014532944.jpg)
顺便做个广告:
引用
我最近使用了15G超大空间免费网络U盘―@酷盘,可在PC及手机上使用,无文件类型及大小限制,传输速度快,文件永不丢失,一起来体验吧!通过下面的邀请链接注册,你和我都将额外获得256MB的酷盘空间! http://t.cn/aNLZje
内容总结
以上是互联网集市为您收集整理的PHP高效率获取树结构信息全部内容,希望文章能够帮你解决PHP高效率获取树结构信息所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。