本文实例讲述了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实现无限极分类生成分类树的方法相关推荐

  1. php无限级分类是什么意思,php无限极分类是什么意思

    php无限极分类简单点说就是一个类可以分成多个子类,然后一个子类又可以分另外多个子类这样无限分下去,就好象windows可以新建一个文件夹,然后在这个文件夹里又可以建一些个文件夹,在文件夹底下还可以建 ...

  2. php 递归实现无限极分类和排序_php递归无限极分类

    递归无限级分类有几种形式,我这里仅仅举例比較经常使用的三种: 第一种:返回有排序的数组: $data = array( 1 => array( 'id' => 1, 'pid' => ...

  3. 无限级分类 php_php无限极分类的方法是什么

    今天给大家带来的是php的无限极分类技术,本人把无限极分类划分为两种.具体方法如下: 首先我把数据库表给大家看看,数据库是tasks,数据库表也是tasks. 相关推荐:<PHP教程> 第 ...

  4. php什么是无限极分类,PHP无限极分类

    下面为大家介绍的是PHP无限极分类的代码,希望能够帮助到大家,大家一起来看一看吧function genTree5($items) { foreach ($items as $item) $items ...

  5. 无限级分类 php_php无限极分类实现方法分析

    本文实例讲述了php无限极分类实现方法.分享给大家供大家参考,具体如下: 今天给大家带来的是php的无限极分类技术,本人把无限极分类划分为两种. 首先我把数据库表给大家看看,数据库是tasks,数据库 ...

  6. php创建多级栏目_PHP 实现无限极栏目分类

    首先,创建一个DB CREATE TABLE IF NOT EXISTS `class` ( `id` mediumint(6) NOT NULL AUTO_INCREMENT, `title` va ...

  7. 两种实现php无限极分类

    一.两种实现php无限极分类 设置原始数据 public function index(){$items = array(1 => array('id' => 1, 'pid' => ...

  8. php 递归实现无限极分类和排序_无限极分类的两种方式,递归和引用

    说到无限极分类,比较常见的做法是在建表的时候,增加一个parnet_id字段用来区别自己所属的分类(是顶级分类还是子分类) 由于展示数据的时候,需要表达出这种所属关系,所以必然要在读取数据的时候进行一 ...

  9. java递归查询无限极分类_sqlserver实现树形结构递归查询(无限极分类)的方法

    SQL Server 2005开始,我们可以直接通过CTE来支持递归查询,CTE即公用表表达式 百度百科 公用表表达式(CTE),是一个在查询中定义的临时命名结果集将在from子句中使用它.每个CTE ...

最新文章

  1. xml语法规则(一)
  2. ubuntu中安装hadoop集群
  3. MDP 笔记:Value Iteration
  4. 若依JAVA开源框架自动生成代码步骤记录-创建子module以及导入子module相关问题
  5. 6.1 从分析到设计
  6. Java13的API_JAVA基础--JAVA API常见对象(其他API)13
  7. 新iPhone将采用更大容量电池:最低3110mAh?
  8. java 解析 datatabe,在JAVA实现DataTable对象(一)
  9. mysql返回李连杰的姓_李连杰:我爷爷不姓李,说出名字后害怕你们没胆量播出去...
  10. ASCII码常用范围
  11. java私塾初级_Java私塾初级教程-19
  12. PHP使用MQ消息队列
  13. 如何编写旋转时钟(源代码)
  14. TOM企邮、腾讯企邮、网易企邮、263企邮,四大企业邮箱实测:谁是最实用的企业邮箱产品?
  15. 从零开始学统计 02 | 总体参数
  16. ORACLE 排序函数row_number / rank / dense_rank
  17. 第一部分:基础篇(一)
  18. 图片分类的入门:二分类
  19. 计算机四层---Iaas、Pass、Saas、Daas
  20. 统计函数耗费时间,简单的图像运算,定义感兴趣区域 第二章

热门文章

  1. mysq命令行导出sql_mysql 命令行导入导出 sql
  2. href 带参数 打开exe_js调用winform程序(带参数)
  3. python中的生产者与消费者模式
  4. confluent connect写出到ES及ClickHouse
  5. ios定位权限plist_iOS-info.plist 中添加定位权限
  6. php webview,Android:控件WebView显示网页 – tinyphp – 博客园
  7. 秋招视频攻略!13个offer,8家SSP的Q神谈算法岗秋招技巧
  8. Solr空间搜索原理分析与实践
  9. 2019蚂蚁金服 Java面试题目!涵盖现场3面真题
  10. 论文浅尝 - IJCAI2020 | KGNN:基于知识图谱的图神经网络预测药物与药物相互作用...