`

PHP > 无限级分类生成树方法

    博客分类:
  • 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);

 

 

分享到:
评论

相关推荐

    无限级分类(数组方法)

    在“无限级分类(数组方法)”这个主题中,我们将主要关注如何通过数组来表示这种树形结构,以及如何遍历和操作这个数组。PHP的数组非常适合处理这类问题,因为它们支持嵌套,并且提供了丰富的操作函数。 1. **构建...

    php+jquery无限级分类

    在IT行业中,无限级分类是一种常见的数据组织方式,特别是在网站内容管理、文章分类或导航菜单设计等领域。PHP和jQuery的结合可以有效地实现这种功能。在这个项目中,我们看到的文件包括`jquery-1.5.2.js`(一个古老...

    php 无限级分类的多个方案

    本篇文章将深入探讨几种实现PHP无限级分类的方法,并提供一个带有数据库的示例。 一、递归函数 递归是实现无限级分类的一种基础方法。通过递归调用自身,我们可以遍历整个分类树。通常,递归函数会接收当前分类的...

    php编写的无限级分类

    在IT领域,数据库管理和网页开发是两个至关重要的部分。...5. 实现相关的PHP脚本,包括分类操作和分类树的生成。 掌握这些知识和技巧,可以帮助开发者在实际项目中构建出灵活且高效的无限级分类系统。

    ajax+php+无限级分类下拉菜单.rar

    在这个场景下,PHP 被用来处理数据库查询,构建无限级分类的树形结构,并将结果转换为JSON格式,方便Ajax调用。 3. **无限级分类**:在数据库设计中,无限级分类通常通过自引用的方式实现,即一个分类可以有多个子...

    小贤PHP无限级分类程序.7z

    这个“小贤PHP无限级分类程序”提供了一个解决方案,让我们来深入探讨这个话题。 无限级分类,顾名思义,就是在数据库或文件系统中,允许类别有任意深度的嵌套。在网站结构中,例如,我们可能有一个主菜单,它下面...

    无限级分类

    **PHP无限级分类** PHP作为服务器端脚本语言,是实现无限级分类的核心工具。无限级分类通常通过递归或者自关联的方式实现。在数据库设计上,一般会有一个`categories`表,包含`id`(主键)、`name`(类别名称)、`...

    ThinkPHP新闻无限级分类

    新闻无限级分类通常涉及到树形数据结构的实现,如多级菜单或分类目录。在数据库设计中,这可以通过自引用的方式实现,即新闻分类表中有一个字段指向自身,表示父类别与子类别的关系。常见的实现方式有Adjacency List...

    PHP无限级树型分类

    总之,PHP无限级树型分类是一项实用的技术,它结合了递归算法和数据库操作,帮助开发者构建灵活且易于管理的分类系统。通过理解和掌握这一技术,我们可以提高在复杂数据结构处理上的能力,从而更好地服务于各种Web...

    php无限级分类-un-limit-tree.zip

    在PHP编程中,无限级分类(Unlimited Level Category)是一个常见的需求,特别是在处理如产品分类、用户组、文章目录等需要层级结构的数据时。`un-limit-tree` 是一个用于实现这种功能的PHP类库,它可以帮助开发者...

    php 无限级分类,超级简单的无限级分类,支持输出树状图

    在PHP中,无限级分类是一种常见...总结,这个PHP类提供了一种简单有效的方法来处理无限级分类数据,通过递归和循环来构建和输出树状结构。它对于处理有层级关系的数据非常实用,且代码简洁易懂,适合在各种项目中复用。

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

    在PHP编程中,无限极分类...在实际应用中,这种递归无限级分类的方法不仅可以用于网站后台管理,还可以在前端展示层次结构,如导航菜单的生成。正确理解和使用递归算法,可以大大提高处理复杂数据结构的效率和便捷性。

    php实现无限级分类实现代码(递归方法)

    本文将深入探讨如何使用PHP实现无限级分类,特别关注递归方法。 首先,我们需要在数据库中建立一个用于存储分类信息的表。这个表通常包含以下字段: 1. ID:主键,用于唯一标识每个分类。 2. PARENTID:父分类ID,...

    php+mysql实现无限级分类

    当然,这只是实现PHP无限级分类的一种方法,实际项目中可能需要根据具体需求调整和优化。在使用递归函数时,还需要注意递归深度的控制,避免出现栈溢出的问题。此外,在某些情况下,使用数据库的LIKE查询来获取分类...

    简单无限级分类(表格、下拉列表)源码

    - **后端**:可能使用PHP、Python、Java等服务器端语言实现,通过SQL查询获取分类数据并构建树形结构。 - **前端**:HTML、CSS和JavaScript(可能使用jQuery或其他库)用于展示和交互。JavaScript可能包含递归函数...

    解析PHP无限级分类方法及代码

    总结来说,PHP无限级分类的实现需要考虑数据结构的设计、数据库查询的效率、递归与非递归算法的选择等多个方面。根据不同的应用场景和数据规模,开发者可以选择适合的存储模型和算法来优化性能和用户体验。在实践中...

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

    以上就是PHP实现无限级分类生成分类树的基本原理和方法。这种方法的核心在于利用数组引用快速定位和修改数据,以及递归地构建每个分类与其父分类、子分类之间的关系。通过这种方式,我们可以灵活地构建出满足不同...

    PHP简单实现无限级分类的方法

    本篇内容给出了一个无限级分类实现的基本方法,同时也提供了相关知识点的参考资料,供开发者进一步学习和探索。 综上所述,使用PHP实现无限级分类功能涉及到数据库设计、递归函数编写、查询优化等多方面的知识。...

    DropDownList无限级分类

    DropDownList无限级分类是一种在网页或应用程序中实现的交互元素,它允许用户从一系列下拉选项中选择一个值。在许多场景中,这些选项可能需要按照层级结构组织,例如国家/地区、部门、职位等,形成一个无限级别的树...

Global site tag (gtag.js) - Google Analytics