你还在用浪费时间又浪费内存的递归遍历无限极分类吗,看了该篇文章,我觉得你应该换换了。

这是我在OSChina上看到的一段非常精简的PHP无限极分类生成树方法,巧在引用,整理分享了。

代码如下:

function generateTree($items){

$tree = array();

foreach($items as $item){

if(isset($items[$item['pid']])){

$items[$item['pid']]['son'][] = &$items[$item['id']];

}else{

$tree[] = &$items[$item['id']];

}

}

return $tree;

}

$items = array(

1 => array('id' => 1, 'pid' => 0, 'name' => '安徽省'),

2 => array('id' => 2, 'pid' => 0, 'name' => '浙江省'),

3 => array('id' => 3, 'pid' => 1, 'name' => '合肥市'),

4 => array('id' => 4, 'pid' => 3, 'name' => '长丰县'),

5 => array('id' => 5, 'pid' => 1, 'name' => '安庆市'),

);

print_r(generateTree($items));

可以看到下面打印的结果:

代码如下:

Array

(

[0] => Array

(

[id] => 1

[pid] => 0

[name] => 安徽省

[son] => Array

(

[0] => Array

(

[id] => 3

[pid] => 1

[name] => 合肥市

[son] => Array

(

[0] => Array

(

[id] => 4

[pid] => 3

[name] => 长丰县

)

)

)

[1] => Array

(

[id] => 5

[pid] => 1

[name] => 安庆市

)

)

)

[1] => Array

(

[id] => 2

[pid] => 0

[name] => 浙江省

)

)

上面生成树方法还可以精简到5行:

代码如下:

function generateTree($items){

foreach($items as $item)

$items[$item['pid']]['son'][$item['id']] = &$items[$item['id']];

return isset($items[0]['son']) ? $items[0]['son'] : array();

}

上面这种无限极分类数据树形结构化的方法值得借鉴。但是我觉得这段代码实际用途并不明显啊,你想取出格式化的树形数据还是要递归啊:

代码如下:

/**

* 如何取数据格式化的树形数据

*/

$tree = generateTree($items);

function getTreeData($tree){

foreach($tree as $t){

echo $t['name'].'

';

if(isset($t['son'])){

getTreeData($t['son']);

}

}

}

getTreeData($tree);

本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉

本文系统来源:php中文网

php实现无限分类超牛逼,PHP超牛逼无限极分类生成树方法_php技巧相关推荐

  1. php 生成树,PHP超牛逼无限极分类生成树方法

    你还在用浪费时间又浪费内存的递归遍历无限极分类吗,看了该篇文章,我觉得你应该换换了. 这是我在OSChina上看到的一段非常精简的PHP无限极分类生成树方法,巧在引用,整理分享了. function ...

  2. 夺命雷公狗ThinkPHP项目之----商城9商品后台无限极分类

    无限极分类,几乎在每个网站上都会用到的,因此而重要. 先来对数据表进行分析 parent_id:表示当前分类的父id,他是实现无限级分类的关键 无限级分类,主要从两个方面进行考虑的. 1.数据库的设计 ...

  3. 无限极分类原理与实现

    前言 无限极分类是我很久前学到知识,今天在做一个项目时,发现对其概念有点模糊,所以今天就来说说无限极分类. 首先来说说什么是无限极分类.按照我的理解,就是对数据完成多次分类,如同一棵树一样,从根开始, ...

  4. php无极分类非递归_无限极分类算法,对你一定有帮助

    无限级分类是开发中常见的情况,也经常会在面试,主考官问到,笔试中遇到,因此本文对常见的无限极分类算法进行总结归纳,其实大多数就是迭代与递归. 1.循环迭代实现 $arr = [1=>['id'= ...

  5. php不使用递归实现无限极分类

    无限极分类常用的是递归,但是比较不好理解,其实可以用数据库path,pid两个字段的设计来实现无限分类的功能 1.数据库设计 通过上图可以看出pid就是该栏目的父id,而path = 父path+pi ...

  6. 无限极分类不知pid_PHP实现无限极分类

    导读:说到无限极分类,这个在程序中是常见的一个功能点了.实现的方式也有很多种,今天着重分享一下涉及到数据库的无线分类,可以使用递归处理,也可以使用循环查询数据库处理.但是我们考虑到数据库的性能问题,都 ...

  7. php 递归实现无限极分类和排序_Laravel框架实现无限极分类

    php中文网最新课程 每日17点准时技术干货分享 最近开发商品功能,在尝试递归和引用方式后,蓦然回首,突然发现laravel框架有更简单高效的实现方式,无限极分类最佳实践,open code与大家共享 ...

  8. 前台特效(9)无限极分类折叠菜单

    在程序中经常会用到无限极分类菜单,经常性的会被绕的头昏脑胀,整理了一个简洁的方式,希望对你有帮助,轻喷!! <!DOCTYPE html><!-- by longdd 2013.4. ...

  9. PHP递归实现无限极分类

    PHP递归实现无限极分类 摘要 今天在编码的时候要用到二级的栏目分类,所以顺便就把无限极分类给整理了一下,采用的是递归方法 //实现无限级分类public function getTree(){$ca ...

最新文章

  1. c语言socket实现ftp,C++ socket实现miniFTP
  2. 计算机主板的1117标识,电脑出现:错误1117.......截图如下,
  3. 9、10、11、12、13_添加标注 (Annotations)、添加网格线(Grid Lines)、显示中文字体、保存图形(saving Figures)、高质量矢量图输出
  4. Photoshop 手动画金标准流程
  5. Mockito 的使用
  6. android 悬浮窗口和主界面同时显示,Android 悬浮窗口(及解决6.0以上无法显示问题)...
  7. Linux as4开启telnet,Red hat AS4开启telnet过程
  8. python3.5安装scrapy_win7+Python3.5下scrapy的安装方法
  9. python 太灵活_Python中的灵活参数
  10. 使用emacs去除源代码中多余的空格
  11. BaseRecyclerViewAdapterHelper: 灵活强大的循环适配器
  12. android返回键返回指定目录,Android 返回键返回到指定的Activity
  13. 解决Amlogic S905或S9xxx在安装Armbian_20.02.0卡logo或无反应的方法
  14. 设计模式笔记之二(工厂模式)
  15. java IO 笔记
  16. mac Axure下载并汉化
  17. 05因果图法和决策表法
  18. 老男孩教育老师的博客
  19. echarts饼图默认中间显示总数
  20. java读取文件的字节数据

热门文章

  1. Linux系统与我之间的故事
  2. 知方可补不足~开发人员可以自己定义VS文件模版
  3. ubuntu 14.04 下通过apt-get 安装jdk
  4. VMware虚拟机文件夹中各文件作用详解
  5. Spring JdbcTemplate的queryForList(String sql , ClassT elementType)易错使用--转载
  6. jquery treeview 树形插件
  7. Linux05-进程管理
  8. java发送苹果消息慢_Spring-boot JMS 发送消息慢的解决方法
  9. 实现线程哪种方法更好_实施数据以实现更好的用户体验设计的4种方法
  10. oracle anbob,Tag Archives: oracle安装 | ANBOB