php + mysql查询实现无限下级分类树输出的案例分析

  介绍

这篇文章给大家分享的是有关php + mysql查询实现无限下级分类树输出的案例分析的内容。小编觉得挺实用的,因此分享给大家做个参考。一起跟随小编过来看看吧。

这里介绍的php结合mysql查询无限下级树输出,其实就是无限分类。给各位整理了几个php无限分类的例子。

树输出:

函数get_array (user_id美元,美元=0){   全球美元mysql, _G美元;   $ sql=把≡駏ser_id作为名称从“{spreads_users}”p1.spreads_userid=& # 39; {$ user_id} & # 39;“;   行=mysql→美元db_fetch_arrays ($ sql);   如果(美元)==1){   $ arr[0][& # 39;名字# 39;]=$ user_id;   $ arr[0][& # 39;孩子# 39;]=array ();   }   顶级=$ + 1美元;   foreach(行关键=祝辞;美元美元值)   {   (r=get_array美元价值[& # 39;名字# 39;]);//调用函数,传入参数,继续查询下级   $ arr[0][& # 39;孩子# 39;][$ key][& # 39;名字# 39;]=$值(& # 39;用户名# 39;);//组合数组   如果(is_array ($ r)) {   $ arr[0][& # 39;孩子# 39;][$ key][& # 39;孩子# 39;]=$ r[0][& # 39;孩子# 39;];   }   美元我+ +;   }   返回由美元;   }   $=get_array列表(“1000“,1);//调用函数1000是顶级ID   回声& # 39;var数据=https://www.yisu.com/zixun/' .json_encode(列表)美元;

这个是输出数组然后转让为json

例子:

表结构:id字段为分类标识,名字字段为分类名,father_id字段为所属父分类的id,路径字段为分类路径,储存该分类祖先的集合,isdir判断是否是目录,1为是,0为否。

<>强显示函数:

//美元计数为分类等级   sort_list (str, fatherid美元,美元计算)   {   rs=这→美元sql→re_datas (“select *从排序father_id=fatherid");   num=这→美元sql→sql_numrows ();   $ i=0;   $ n=1;   而(收取(rs [$ i])美元)   {   $ name=?“;   (n=1美元;$ n & lt;数美元;$ n)   {   美元的名字。=癌Α?   }   如果($ 1==$ num)   {   美元的名字。=癌俯ぁ啊C涝猺s [$ i][名字];   }   其他的   {   美元的名字。=癌扩ぁ啊C涝猺s [$ i][名字];   }   如果(rs美元($ i) [isdir])   {   str美元。=? lt;跨风格=& # 39;颜色:# CCCCCC& # 39;在“。美元干净自己的名字& lt;/span>“;   }   其他的   {   str美元。=$ name";   }   temp=美元计数1;   str=这→美元sort_list (str, rs美元($ i) (id),临时美元);   我美元;   }   返回str美元;   }

其中$ this→sql对象为sql操作类对象,re_datas()函数返回查到的数组,sql_numrows()函数返回查询到的数目。

调用方法:

$ sort_list=sort_list (sort_list美元0,1);

例子:

表:类别

顶级分类的pid默认就是0了,当我们想取出某个分类的子分类树的时候,基本思路就是递归,当然,出于效率问题不建议每次递归都查询数据库,通常的做法是先讲所有分类取出来,保存到php数组里,再进行处理,最后还可以将结果缓存起来以提高下次请求的效率。
先来构建一个原始数组,这个直接从数据库中拉出来就行:

$类别=阵列(   数组(& # 39;id # 39;=祝辞1 & # 39;名字# 39;=祝辞& # 39;电脑& # 39;,& # 39;pid # 39;=祝辞0),   阵列(& # 39;id # 39;=祝辞;2,& # 39;名字# 39;=祝辞& # 39;手机& # 39;,& # 39;pid # 39;=祝辞0),   阵列(& # 39;id # 39;=祝辞;3,& # 39;名字# 39;=祝辞& # 39;笔记本& # 39;,& # 39;pid # 39;=祝辞;1),   阵列(& # 39;id # 39;=在4日& # 39;名字# 39;=祝辞& # 39;台式机& # 39;,& # 39;pid # 39;=祝辞;1),   数组(& # 39;id # 39;=祝辞5 & # 39;名字# 39;=祝辞& # 39;智能机& # 39;,& # 39;pid # 39;=祝辞;2),   数组(& # 39;id # 39;=在6日& # 39;名字# 39;=祝辞& # 39;功能机& # 39;,& # 39;pid # 39;=祝辞;2),   数组(& # 39;id # 39;=在7日& # 39;名字# 39;=祝辞& # 39;超级本& # 39;,& # 39;pid # 39;=祝辞;3),   数组(& # 39;id # 39;=在8日& # 39;名字# 39;=祝辞& # 39;游戏本& # 39;,& # 39;pid # 39;=祝辞;3),   );

目标是将它转化为下面这种结构:

电脑   ——笔记本   推荐- - - - - -超级本   ——游戏本   ——台式机   手机   ——智能机   ——功能机

用数组来表示的话,可以增加一个孩子键来存储它的子分类:

阵列(//1对应id、方便直接读取   1=比;阵列(   & # 39;id # 39;=祝辞;1,   & # 39;名字# 39;=祝辞& # 39;电脑& # 39;,   & # 39;pid # 39;=祝辞0,   孩子=祝辞阵列(   和数组(   & # 39;id # 39;=祝辞;3,   & # 39;名字# 39;=祝辞& # 39;笔记本& # 39;,   & # 39;pid # 39;=祝辞;1,   & # 39;孩子# 39;=祝辞阵列(//此处省略   )   ),   和数组(   & # 39;id # 39;=祝辞;4,   & # 39;名字# 39;=祝辞& # 39;台式机& # 39;,   & # 39;pid # 39;=祝辞;1,   & # 39;孩子# 39;=祝辞阵列(//此处省略   )   ),   )   ),//其他分类省略   )

php + mysql查询实现无限下级分类树输出的案例分析