当前位置:首页 > Web开发 > 正文

PHP操作递归函数实现无限级分类的要领

2024-03-31 Web开发

相信很多学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字段将不能阐扬排序的感化。

总结

以上就是这篇文章的全部内容了,但愿本文的内容对大家的学习或者事情具有必然的参考学习价值,感谢大家对敏而好学论坛/嗨学网的撑持。如果你想了解更多相关内容请检察下面相关链接

原文地点是:

PHP操作递归函数实现无限级分类的要领_php技巧 - PHP

温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/web/33128.html