侯体宗的博客
  • 首页
  • 人生(杂谈)
  • 技术
  • 关于我
  • 更多分类
    • 文件下载
    • 文字修仙
    • 中国象棋ai
    • 群聊
    • 九宫格抽奖
    • 拼图
    • 消消乐
    • 相册

PHP实现无限级分类(不使用递归)

php  /  管理员 发布于 7年前   378

无限级分类在开发中经常使用,例如:部门结构、文章分类。无限级分类的难点在于“输出”和“查询”,例如

  • 将文章分类输出为
      列表形式;
    • 查找分类A下面所有分类包含的文章。

    1.实现原理
    几种常见的实现方法,各有利弊。其中“改进前序遍历树”数据结构,便于输出和查询,但是在移动分类和常规理解上有些复杂。

    2.数据结构

    1, 'fid'=>0, 'title' => '中国'),  array('id'=>2, 'fid'=>1, 'title' => '江苏'), array('id'=>3, 'fid'=>1, 'title' => '安徽'), array('id'=>4, 'fid'=>8, 'title' => '江阴'), array('id'=>5, 'fid'=>3, 'title' => '芜湖'), array('id'=>6, 'fid'=>3, 'title' => '合肥'), array('id'=>7, 'fid'=>3, 'title' => '蚌埠'), array('id'=>8, 'fid'=>8, 'title' => '无锡') );?>

    各分类之间通过父类id(即fid)进行级别“串联”,形成一棵分类树。在进行串联时候有一点值得注意:分类A的fid不可以是其子类的id。

    在使用这种数据结构进行输出时最常用的算法就是“递归”,熟悉PHP语言的朋友肯定知道,PHP不擅长递归 ,而且递归次数有限(100次左右,因操作系统和配置而异)。

    由于所有的递归均可以使用循环实现,本文根据PHP语言特点编写了一套关于“无限级”分类的函数,相比递归实现而言效率更高。

    3.输出ul列表形式
    将上述数据输出为下面的HTML

    • 江苏
      • 无锡
        • 江阴
    • 安徽
      • 芜湖
      • 合肥
      • 蚌埠

    这种HTML结构在前端使用(使用JavaScript和CSS构造可折叠树)十分方便。具体实现程序如下:

    4.输出option列表形式

    具体实现程序如下:

    邮箱:

0条评论 (评论内容有缓存机制,请悉知!)
最新最热
  • 分类目录
  • 人生(杂谈)
  • 技术
  • linux
  • Java
  • php
  • 框架(架构)
  • 前端
  • ThinkPHP
  • 数据库
  • 微信(小程序)
  • Laravel
  • Redis
  • Docker
  • Go
  • swoole
  • Windows
  • Python
  • 苹果(mac/ios)
  • 相关文章
  • Laravel从Accel获得5700万美元A轮融资(0个评论)
  • PHP 8.4 Alpha 1现已发布!(0个评论)
  • 用Time Warden监控PHP中的代码处理时间(0个评论)
  • 在PHP中使用array_pop + yield实现读取超大型目录功能示例(0个评论)
  • Property Hooks RFC在PHP 8.4中越来越接近现实(0个评论)
  • 近期文章
  • 在windows10中升级go版本至1.24后LiteIDE的Ctrl+左击无法跳转问题解决方案(0个评论)
  • 智能合约Solidity学习CryptoZombie第四课:僵尸作战系统(0个评论)
  • 智能合约Solidity学习CryptoZombie第三课:组建僵尸军队(高级Solidity理论)(0个评论)
  • 智能合约Solidity学习CryptoZombie第二课:让你的僵尸猎食(0个评论)
  • 智能合约Solidity学习CryptoZombie第一课:生成一只你的僵尸(0个评论)
  • 在go中实现一个常用的先进先出的缓存淘汰算法示例代码(0个评论)
  • 在go+gin中使用"github.com/skip2/go-qrcode"实现url转二维码功能(0个评论)
  • 在go语言中使用api.geonames.org接口实现根据国际邮政编码获取地址信息功能(1个评论)
  • 在go语言中使用github.com/signintech/gopdf实现生成pdf分页文件功能(95个评论)
  • gmail发邮件报错:534 5.7.9 Application-specific password required...解决方案(0个评论)
  • 近期评论
  • 122 在

    学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..
  • 123 在

    Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..
  • 原梓番博客 在

    在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..
  • 博主 在

    佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..
  • 1111 在

    佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
  • 2016-10
  • 2016-11
  • 2017-06
  • 2017-07
  • 2017-08
  • 2017-09
  • 2017-11
  • 2017-12
  • 2018-01
  • 2018-02
  • 2018-03
  • 2020-03
  • 2020-04
  • 2020-05
  • 2020-06
  • 2020-07
  • 2020-09
  • 2021-02
  • 2021-03
  • 2021-04
  • 2021-05
  • 2021-06
  • 2021-07
  • 2021-08
  • 2021-09
  • 2021-10
  • 2021-11
  • 2021-12
  • 2022-01
  • 2022-02
  • 2022-05
  • 2022-06
  • 2022-07
  • 2022-08
  • 2022-09
  • 2022-10
  • 2022-11
  • 2022-12
  • 2023-01
  • 2023-02
  • 2023-03
  • 2023-04
  • 2023-05
  • 2023-06
  • 2023-07
  • 2023-08
  • 2023-09
  • 2023-10
  • 2023-11
  • 2023-12
  • 2024-01
  • 2024-02
  • 2024-03
  • 2024-04
  • 2024-05
  • 2024-06
  • 2024-07
  • 2024-09
Top

Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号 PHP交流群

侯体宗的博客