本文实例讲述了PHP实现无限极分类生成分类树的方法。分享给大家供大家参考,具体如下:

现在的分类数据库设计基本都是:每一个分类有一个id主键字段,一个pid指向父类的id,这样便可实现无限级分类,取出的数据就是如下的格式:
$arr = array(
array("id" => 1 , "pid" => 0 , 'cat' => '栏目一'),
array("id" => 2 , "pid" => 0 , 'cat' => '栏目二'),
array("id" => 3 , "pid" => 1 , 'cat' => '栏目三'),
array("id" => 4 , "pid" => 2 , 'cat' => '栏目四'),
array("id" => 5 , "pid" => 1 , 'cat' => '栏目五'),
array("id" => 6 , "pid" => 5 , 'cat' => '栏目六'),
array("id" => 7 , "pid" => 5 , 'cat' => '栏目七'),
array("id" => 8 , "pid" => 6 , 'cat' => '栏目八'),
array("id" => 9 , "pid" => 1 , 'cat' => '栏目九'),
array("id" => 10 , "pid" => 0 , 'cat' => '栏目十'),
array("id" => 11 , "pid" => 10 , 'cat' => '栏目十一'),
array("id" => 12 , "pid" => 11 , 'cat' => '栏目十二'),
array("id" => 13 , "pid" => 2 , 'cat' => '栏目十三'),
array("id" => 14, "pid" => 13 , 'cat' => '栏目十四')
);
不多说,直接上处理代码:
//生成无限极分类树
function make_tree($arr){
$refer = array();
$tree = array();
foreach($arr as $k => $v){
$refer[$v['id']] = & $arr[$k]; //创建主键的数组引用
}
foreach($arr as $k => $v){
$pid = $v['pid']; //获取当前分类的父级id
if($pid == 0){
$tree[] = & $arr[$k]; //顶级栏目
}else{
if(isset($refer[$pid])){
$refer[$pid]['subcat'][] = & $arr[$k]; //如果存在父级栏目,则添加进父级栏目的子栏目数组中
}
}
}
return $tree;
}
测试运行:
$cat = make_tree($arr); print_r($cat);
运行结果:
Array
(
[0] => Array
(
[id] => 1
[pid] => 0
[cat] => 栏目一
[subcat] => Array
(
[0] => Array
(
[id] => 3
[pid] => 1
[cat] => 栏目三
)
[1] => Array
(
[id] => 5
[pid] => 1
[cat] => 栏目五
[subcat] => Array
(
[0] => Array
(
[id] => 6
[pid] => 5
[cat] => 栏目六
[subcat] => Array
(
[0] => Array
(
[id] => 8
[pid] => 6
[cat] => 栏目八
)
)
)
[1] => Array
(
[id] => 7
[pid] => 5
[cat] => 栏目七
)
)
)
[2] => Array
(
[id] => 9
[pid] => 1
[cat] => 栏目九
)
)
)
[1] => Array
(
[id] => 2
[pid] => 0
[cat] => 栏目二
[subcat] => Array
(
[0] => Array
(
[id] => 4
[pid] => 2
[cat] => 栏目四
)
[1] => Array
(
[id] => 13
[pid] => 2
[cat] => 栏目十三
[subcat] => Array
(
[0] => Array
(
[id] => 14
[pid] => 13
[cat] => 栏目十四
)
)
)
)
)
[2] => Array
(
[id] => 10
[pid] => 0
[cat] => 栏目十
[subcat] => Array
(
[0] => Array
(
[id] => 11
[pid] => 10
[cat] => 栏目十一
[subcat] => Array
(
[0] => Array
(
[id] => 12
[pid] => 11
[cat] => 栏目十二
)
)
)
)
)
)
如果大家需要这样的组装格式,或者需要该格式方便后续的处理,可以尝试此方法
更多关于PHP相关内容感兴趣的读者可查看本站专题:《PHP数据结构与算法教程》、《php程序设计算法总结》、《PHP常用遍历算法与技巧总结》、《PHP数学运算技巧总结》、《PHP数组(Array)操作技巧大全》、《php字符串(string)用法总结》及《php常见数据库操作技巧汇总》
希望本文所述对大家PHP程序设计有所帮助。
# PHP
# 无限极
# 分类
# 分类树
# php无限极分类实现的两种解决方法
# PHP超牛逼无限极分类生成树方法
# php无限极分类递归排序实现方法
# php 无限极分类
# php通过前序遍历树实现无需递归的无限极分类
# PHP无限极分类函数的实现方法详解
# 深入浅析PHP无限极分类的案例教程
# php实现smarty模板无限极分类的方法
# thinkphp5使用无限极分类
# 浅谈PHP无限极分类原理
# PHP实现无限极分类的两种方式示例【递归和引用方式】
# php无限极分类实现方法分析
# 程序设计
# 主键
# 都是
# 操作技巧
# 相关内容
# 遍历
# 感兴趣
# 数据结构
# 给大家
# 便可
# 多说
# 更多关于
# 所述
# 有一个
# 组中
# 讲述了
# subcat
# pid
# 进父级
相关文章:
如何高效完成独享虚拟主机建站?
如何在景安云服务器上绑定域名并配置虚拟主机?
网站制作话术技巧,网站推广做的好怎么话术?
如何解决VPS建站LNMP环境配置常见问题?
单页制作网站有哪些,朋友给我发了一个单页网站,我应该怎么修改才能把他变成自己的呢,请求高手指点迷津?
山东云建站价格为何差异显著?
如何通过宝塔面板实现本地网站访问?
岳西云建站教程与模板下载_一站式快速建站系统操作指南
如何通过IIS搭建网站并配置访问权限?
品牌网站制作公司有哪些,买正品品牌一般去哪个网站买?
建站中国官网:模板定制+SEO优化+建站流程一站式指南
名字制作网站免费,所有小说网站的名字?
自助网站制作软件,个人如何自助建网站?
简历在线制作网站免费版,如何创建个人简历?
定制建站哪家更专业可靠?推荐榜单揭晓
如何在阿里云高效完成企业建站全流程?
如何通过PHP快速构建高效问答网站功能?
建站之星伪静态规则如何设置?
如何在西部数码注册域名并快速搭建网站?
ui设计制作网站有哪些,手机UI设计网址吗?
c# 在高并发场景下,委托和接口调用的性能对比
b2c电商网站制作流程,b2c水平综合的电商平台?
,制作一个手机app网站要多少钱?
实惠建站价格推荐:2025年高性价比自助建站套餐解析
已有域名能否直接搭建网站?
如何用景安虚拟主机手机版绑定域名建站?
网站建设制作需要多少钱费用,自己做一个网站要多少钱,模板一般多少钱?
北京网站制作费用多少,建立一个公司网站的费用.有哪些部分,分别要多少钱?
如何在阿里云部署织梦网站?
c++如何打印函数堆栈信息_c++ backtrace函数与符号名解析【方法】
深圳企业网站制作设计,在深圳如何网上全流程注册公司?
教学网站制作软件,学习*后期制作的网站有哪些?
建站VPS配置与SEO优化指南:关键词排名提升策略
代购小票制作网站有哪些,购物小票的简要说明?
香港服务器网站卡顿?如何解决网络延迟与负载问题?
上海制作企业网站有哪些,上海有哪些网站可以让企业免费发布招聘信息?
存储型VPS适合搭建中小型网站吗?
文字头像制作网站推荐软件,醒图能自动配文字吗?
制作充值网站的软件,做人力招聘为什么要自己交端口钱?
如何在香港服务器上快速搭建免备案网站?
网站制作中优化长尾关键字挖掘的技巧,建一个视频网站需要多少钱?
如何在IIS7上新建站点并设置安全权限?
小说建站VPS选用指南:性能对比、配置优化与建站方案解析
C++中引用和指针有什么区别?(代码说明)
北京网站制作的公司有哪些,北京白云观官方网站?
建站之星价格显示格式升级,你的预算足够吗?
学校建站服务器如何选型才能满足性能需求?
专业网站建设制作报价,网页设计制作要考什么证?
Python lxml的etree和ElementTree有什么区别
定制建站如何定义?其核心优势是什么?
*请认真填写需求信息,我们会在24小时内与您取得联系。