`
天梯梦
  • 浏览: 13730596 次
  • 性别: Icon_minigender_2
  • 来自: 洛杉矶
社区版块
存档分类
最新评论

PHP无限极分类生成树方法,无限分级

 
阅读更多

你还在用浪费时间又浪费内存的递归遍历无限极分类吗,看了该篇文章,我觉得你应该换换了。
这是我在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();
}

 

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

/**
 * 如何取数据格式化的树形数据
 * @blog<http://www.phpddt.com>
 */
$tree = generateTree($items);
function getTreeData($tree){
    foreach($tree as $t){
        echo $t['name'].'<br>';
        if(isset($t['son'])){
            getTreeData($t['son']);
        }
    }
}
getTreeData($tree);

 

转载请注明地址: http://www.phpddt.com/php/generateTree.html

 

 

 

分享到:
评论

相关推荐

    PHP超牛逼无限极分类生成树方法

    【PHP无限极分类生成树方法】在处理层级关系的数据时,如目录结构、组织架构等,无限极分类生成树是一个常见的需求。传统的递归方法虽然简单易懂,但随着层级的增加,会消耗大量时间和内存。本文介绍的PHP无限极分类...

    php无限极分类两种方法.rar

    本压缩包文件“php无限极分类两种方法.rar”包含两种实现无限极分类的方法:递归无限极分类和引用无限极分类。这两种方法都是为了在数据库查询出的数据上构建具有任意深度的层次结构。 首先,我们来详细讲解**递归...

    php无限极分类源码.

    在PHP编程中,无限极分类是一种常见的数据组织方式,尤其在处理树形结构的数据时,如网站导航菜单、论坛板块、商品分类等。无限级分类允许我们构建深度未知的层级结构,使得数据管理更加灵活。下面,我们将深入探讨...

    php无限极分类函数

    php无限极分类函数包,下载即可用,绝对好用,里面有多种无限极分类函数,可以参考,我都试过了

    PHP实现无限极分类生成分类树的方法

    在讨论如何使用PHP实现无限极分类生成分类树之前,我们首先需要了解什么是无限级分类。无限级分类是一种通过父级ID引用的方式,允许一个节点拥有无限多的子节点,形成一个层级结构。这种结构在各种应用中非常常见,...

    php递归获取子级,父级,无限极分类,带demo,效率超高

    在PHP编程中,无限极分类是一项常见的需求,特别是在构建如菜单、组织结构或者商品分类等系统时。这个压缩包中的内容显然提供了一个高效的方法来处理这类问题,通过递归算法实现无限级分类,并且附带了示例代码...

    tp树形无限极分类

    本示例中的"tp树形无限极分类"是基于流行的PHP框架ThinkPHP 3.2.3实现的一个功能,旨在帮助开发者理解和应用无限级分类。 **ThinkPHP 3.2.3框架简介:** ThinkPHP 3.2.3是ThinkPHP框架的早期版本,它是一款轻量级的...

    asp 无限极分类完整实例

    通过遍历每个分类并检查其子分类,递归调用自身来生成整个分类树。 4. **class.mdb**: 这是一个Access数据库文件,很可能包含了存储分类信息的表。表中至少会有两个字段:`id`(分类的唯一标识)和`parent_id`...

    php获取子级,父级,无限极分类,带demo,效率超高

    php获取子级,父级,无限极分类,带demo,效率超高。下载请评价,谢谢!!!买到就是赚到,一直在用

    无限极分类下拉框 无限极 分类 下拉框

    从给定的代码片段来看,这是一个使用ASP.NET Web Forms实现的无限极分类下拉框功能。无限极分类下拉框通常用于展示具有层级结构的数据,如产品分类、地区选择等,用户可以选择任意级别的分类,而不仅仅是最高级或最...

    无限极分类函数

    在IT行业中,无限极分类(或称为多级分类、层级分类)是一种常见的数据组织方式,特别是在网站内容管理和数据库设计中。无限极分类允许我们创建一个无限制深度的分类结构,例如,电商网站的商品分类,可以是电子产品...

    php无限极分类相关代码类.zip

    本压缩包中的"php无限极分类相关代码类.zip"提供了一个非递归的方式来处理这种分类,这通常比递归方法更高效,尤其是在分类层次较深时。 这个类库的核心在于通过“路径字段”来管理分类的关系。路径字段是一种常用...

    php无限极分类实现的两种解决方法

    reader: 这是自己写的无限极分类实现方法 里面的编辑方法只是对分类名进行了编辑 没有进行移动操作 小弟能力有限忘大家多多包涵啊  第一种方法:CREATE TABLE `types` ( `type_id` int(11) NOT NULL AUTO_...

    C#无限极分类

    C#作为.NET框架的主要编程语言,提供了多种实现无限极分类的方法。下面我们将深入探讨C#中实现无限极分类的关键知识点。 1. 数据库设计: - **自引用表**:通常我们会使用自引用表来存储层级关系,每个类别都有一...

    文档无限极分类

    - **文档无限极分类**:指的是一种可以无限细分和扩展的文档分类方法。与传统的固定层级结构不同,这种方法支持文档按照需要被无限分级或跨级归类,极大地提高了文档管理的灵活性和适应性。 #### 描述解析 - **...

    TreeView控件的无限极分类

    ### TreeView 控件实现无限极分类 在 Web 开发中,`TreeView` 控件是非常实用的一个工具,尤其在展示层级关系的数据结构时更是如此。本文档将深入探讨如何使用 `TreeView` 控件来实现无限极分类,并通过具体的代码...

    PHP无限极分类原生代码.zip

    在PHP编程中,无限极分类是一种常见的数据组织方式,尤其在处理树形结构的数据时,如网站导航菜单、目录层级、论坛板块等。无限极分类允许我们构建深度未知的层次结构,使得每个条目都可以有任意数量的子条目。在...

    Java 无限极 树结构

    无限极树结构则是指树的层级没有限制,可以无限扩展。这种结构在实际应用中非常广泛,例如组织架构、文件系统、菜单导航等场景。下面将详细介绍如何在Java中实现无限极树结构及其相关知识点。 一、树节点类设计 ...

Global site tag (gtag.js) - Google Analytics