PHP利用递归函数实现无限级分类的方法
发布:smiling 来源: PHP粉丝网 添加日期:2021-11-13 23:17:53 浏览: 评论:0
相信很多学php的很多小伙伴都会尝试做一个网上商城作为提升自己技术的一种途径。各种对商品分类,商品名之类的操作应该是得心应手,那么就可以尝试下无限级分类列表的制作了。
什么是无限级分类?
无限级分类是一种分类技巧,例如部门组织,文章分类,学科分类等常用到无限级分类,将其简单理解成分类就好了。其实我们仔细想一下,生活中的分类简直太多了,衣服可以分为男装和女装,也可以分为上衣和裤子,也可以根据年龄段分类。分类无处不在,分类显得“无限”。我这里就不说无限分类的必要性了。
无限级分类原理简介
无限分类看似"高大上",实际上原理是非常简单的 。无限分类不仅仅需要代码的巧妙性,也要依托数据库设计的合理性。要满足无限级分类,数据库需要有两个必须的字段,id,pid。id用来标识自身,而pid则是用来表明父级id。也就是说,每个分类记录不仅描述了自身,还描述了与其关心最为紧密的另一个id。看似复杂的事情被这样一个小技巧解决了。
php无限级分类是经常要用到的,本人以前一直用的是已经写好的,所以没仔细去研究过,下面是一个使用递归实现的简单的php无限级分类的函数;也许这不是最优的方法,但对于一般的应用也足够了。
数据表结构
- CREATE TABLE IF NOT EXISTS `category` (
- `id` int(5) NOT NULL AUTO_INCREMENT COMMENT '唯一自增id',
- `pid` int(5) NOT NULL DEFAULT '0' COMMENT '父id',
- `sort` int(2) NOT NULL DEFAULT '0' COMMENT '排序数字',
- `name` varchar(30) DEFAULT NULL COMMENT '名称',
- PRIMARY KEY (`id`)
- ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='无限极分类表' AUTO_INCREMENT=1 ;
数据
- INSERT INTO `category` (`id`, `pid`, `sort`, `name`) VALUES
- (1, 0, 1, 'php'),
- (2, 0, 2, '数据库'),
- (3, 0, 3, 'javascript'),
- (4, 1, 1, '框架模板'),
- (5, 1, 2, '函数总结'),
- (6, 2, 1, 'mysql'),
- (7, 4, 1, '框架'),
- (8, 4, 2, '模板'),
- (9, 8, 1, 'smarty'),
- (10, 7, 2, 'thinkphp'),
- (11, 10, 1, 'thinkphp技巧'),
- (12, 10, 2, 'thinkphp模板'),
- (13, 12, 3, '模板知识总结'),
- (14, 12, 2, '模板视频教程'),
- (15, 11, 1, 'model技巧');
函数实现代码
- function tree(&$list,$pid=0,$level=0,$html='--'){
- static $tree=array();
- foreach($list as $v){
- if($v['pid']==$pid){
- $v['level']=$level;
- $v['html']=str_repeat($html,$level);
- $tree[]=$v;
- tree($list,$v['id'],$level+1,$html);
- }
- }
- return $tree;
- }
以上tree函数的第一个参数$list就是获取的如上表的一个二维数组的结果集。需要注意的是从数据库获取结果集的sql语句必须加上order by sort asc,否则sort字段将不能发挥排序的作用。
Tags: PHP递归函数 PHP无限级分类
- 上一篇:用PHP的反射实现委托模式的讲解
- 下一篇:PHP设计模式之PHP迭代器模式讲解
相关文章
- ·php无限级分类程序(2014-08-02)
- ·php无限级分类实例(2014-08-02)
- ·PHP无限级分类(2014-08-06)
- ·PHP用递归返回无限级分类回字符串或数组实例(2015-04-08)
- ·php 无限级分类 获取顶级分类ID(2019-11-26)
- ·php 无限级分类,超级简单的无限级分类,支持输出树状图(2021-03-03)
- ·php+mysql不用递归实现的无限级分类实例(非递归)(2021-03-17)
- ·2款PHP无限级分类实例代码(2021-06-26)
- ·php 无限级分类 获取顶级分类ID(2021-07-14)
- ·PHP简单实现无限级分类的方法(2021-08-04)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)