手机版

PHP实现递归无限分类

时间:2021-09-29 来源:互联网 编辑:宝哥软件园 浏览:

在一些复杂系统中,为了增强系统的灵活性,需要对信息列进行无限分类。那么PHP如何实现无限分类呢?本文利用递归算法和mysql数据表实现无限分类。递归只是重复调用一段程序代码。当代码写入用户自定义函数时,参数等变量被保存,函数在函数中反复调用,直到达到某个条件,返回相应的数据。首先,Mysql准备了一个数据表类来记录商品分类信息。表中有三个字段,id:分类号,主键自行增长。标题:分类名称;Pid:上级分类id。班级表结构:

如果“类”不存在,则创建表(` id ' medium int(6)不为空AUTO_INCREMENT,` title ' varchar(30)不为空,` PID ' medium int(6)不为空DEFAULT '0 ',主键(` id `)) ENGINE=MyISAM DEFAULT CHARSET=utf8;插入数据后,如图所示:

根据PHP的不同需求,我们提供了两种不同格式的自定义函数,一种是返回字符串,另一种是返回数组,两种函数都使用递归的方法。先看看返回字符串格式的函数:

函数get _ str($ id=0){ global $ str;$sql='从类中选择id、标题,其中PID=$ id ';$ result=MySQL _ query($ SQL);//查询pid的子类的分类If($ result MySQL _ affected _ rows()){//如果有子类$str。=' ulwhile($ row=MySQL _ fetch _ array($ result)){//循环记录集$ str。='李'。$ row ['id']。'-'.$ row ['title']。/李;//构建字符串get _ str($ row[' id ']);//调用get_str(),将记录集中的id参数传入函数,继续查询下级} $str。='/ul ';}返回$ str}上述函数get_str()通过递归不断查询下级分类,最后返回字符串。您可以根据项目需求修改str,最后生成一个无限分层列表:

include _ once(' connect . PHP ');//连接数据库,自己写一个connect.php文件。echo get _ str(0);//输出无限分类效果如:

接下来,让我们看看返回数组格式的函数,并使用递归:

函数get_array($id=0){ $sql='从类中选择id,title,其中PID=$ id ';$ result=MySQL _ query($ SQL);//查询子类$ arr=array();if($ result MySQL _ affected _ rows()){//如果有子类while($ rows=MySQL _ fetch _ assoc($ result)){//循环记录集$ rows[' list ']=get _ array($ rows[' id ']);//调用函数,传入参数,继续查询下级$ arr[]=$行;//组合数组}返回$ arr}}函数get_array()返回一个数组,这是我们所期望的,所以我建议使用get_array()来获取数组,这样我们就可以对数组进行任何操作。比如我们可以把数组转换成json格式的数据发送到首页,通过解析json数据,可以灵活显示分类信息。例如树形分类列表、下拉分类列表等。

include _ once(' connect . PHP ');//连接数据库$ list=get _ array(0);//调用函数print _ r($ list);//输出数组输出效果如下:

如果要以json格式输出数据,可以使用:

echo JSON _ encode($ list);以上方法教你如何用php实现递归无限分类。希望这篇文章对你的学习有所帮助。

版权声明:PHP实现递归无限分类是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。