php根据分类生成网址,PHP实现无限极分类生成分类树的方法
本文实例讲述了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无限极分类简单点说就是一个类可以分成多个子类,然后一个子类又可以分另外多个子类这样无限分下去,就好象windows可以新建一个文件夹,然后在这个文件夹里又可以建一些个文件夹,在文件夹底下还可以建 ...
- php 递归实现无限极分类和排序_php递归无限极分类
递归无限级分类有几种形式,我这里仅仅举例比較经常使用的三种: 第一种:返回有排序的数组: $data = array( 1 => array( 'id' => 1, 'pid' => ...
- 无限级分类 php_php无限极分类的方法是什么
今天给大家带来的是php的无限极分类技术,本人把无限极分类划分为两种.具体方法如下: 首先我把数据库表给大家看看,数据库是tasks,数据库表也是tasks. 相关推荐:<PHP教程> 第 ...
- php什么是无限极分类,PHP无限极分类
下面为大家介绍的是PHP无限极分类的代码,希望能够帮助到大家,大家一起来看一看吧function genTree5($items) { foreach ($items as $item) $items ...
- 无限级分类 php_php无限极分类实现方法分析
本文实例讲述了php无限极分类实现方法.分享给大家供大家参考,具体如下: 今天给大家带来的是php的无限极分类技术,本人把无限极分类划分为两种. 首先我把数据库表给大家看看,数据库是tasks,数据库 ...
- php创建多级栏目_PHP 实现无限极栏目分类
首先,创建一个DB CREATE TABLE IF NOT EXISTS `class` ( `id` mediumint(6) NOT NULL AUTO_INCREMENT, `title` va ...
- 两种实现php无限极分类
一.两种实现php无限极分类 设置原始数据 public function index(){$items = array(1 => array('id' => 1, 'pid' => ...
- php 递归实现无限极分类和排序_无限极分类的两种方式,递归和引用
说到无限极分类,比较常见的做法是在建表的时候,增加一个parnet_id字段用来区别自己所属的分类(是顶级分类还是子分类) 由于展示数据的时候,需要表达出这种所属关系,所以必然要在读取数据的时候进行一 ...
- java递归查询无限极分类_sqlserver实现树形结构递归查询(无限极分类)的方法
SQL Server 2005开始,我们可以直接通过CTE来支持递归查询,CTE即公用表表达式 百度百科 公用表表达式(CTE),是一个在查询中定义的临时命名结果集将在from子句中使用它.每个CTE ...
最新文章
- xml语法规则(一)
- ubuntu中安装hadoop集群
- MDP 笔记:Value Iteration
- 若依JAVA开源框架自动生成代码步骤记录-创建子module以及导入子module相关问题
- 6.1 从分析到设计
- Java13的API_JAVA基础--JAVA API常见对象(其他API)13
- 新iPhone将采用更大容量电池:最低3110mAh?
- java 解析 datatabe,在JAVA实现DataTable对象(一)
- mysql返回李连杰的姓_李连杰:我爷爷不姓李,说出名字后害怕你们没胆量播出去...
- ASCII码常用范围
- java私塾初级_Java私塾初级教程-19
- PHP使用MQ消息队列
- 如何编写旋转时钟(源代码)
- TOM企邮、腾讯企邮、网易企邮、263企邮,四大企业邮箱实测:谁是最实用的企业邮箱产品?
- 从零开始学统计 02 | 总体参数
- ORACLE 排序函数row_number / rank / dense_rank
- 第一部分:基础篇(一)
- 图片分类的入门:二分类
- 计算机四层---Iaas、Pass、Saas、Daas
- 统计函数耗费时间,简单的图像运算,定义感兴趣区域 第二章
热门文章
- mysq命令行导出sql_mysql 命令行导入导出 sql
- href 带参数 打开exe_js调用winform程序(带参数)
- python中的生产者与消费者模式
- confluent connect写出到ES及ClickHouse
- ios定位权限plist_iOS-info.plist 中添加定位权限
- php webview,Android:控件WebView显示网页 – tinyphp – 博客园
- 秋招视频攻略!13个offer,8家SSP的Q神谈算法岗秋招技巧
- Solr空间搜索原理分析与实践
- 2019蚂蚁金服 Java面试题目!涵盖现场3面真题
- 论文浅尝 - IJCAI2020 | KGNN:基于知识图谱的图神经网络预测药物与药物相互作用...