介绍
这篇文章给大家分享的是有关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查询实现无限下级分类树输出的案例分析