Laravel  
laravel
文档
数据库
架构
入门
php技术
    
Laravelphp
laravel / php / java / vue / mysql / linux / python / javascript / html / css / c++ / c#

php 无限极分类 递归(php无限分类实现不使用递归)

作者:洮娦ゞ   发布日期:2025-11-09   浏览:222

使用递归是实现无限极分类的常见方法,但也可以通过循环来实现无限分类,以下是一个不使用递归的示例:

function buildTree($categories, $parentId = 0) {
    $tree = array();

    foreach ($categories as $category) {
        if ($category['parent_id'] == $parentId) {
            $children = buildTree($categories, $category['id']);
            if ($children) {
                $category['children'] = $children;
            }
            $tree[] = $category;
        }
    }

    return $tree;
}

// 示例数据
$categories = array(
    array('id' => 1, 'parent_id' => 0, 'name' => 'Category 1'),
    array('id' => 2, 'parent_id' => 0, 'name' => 'Category 2'),
    array('id' => 3, 'parent_id' => 1, 'name' => 'Category 1.1'),
    array('id' => 4, 'parent_id' => 1, 'name' => 'Category 1.2'),
    array('id' => 5, 'parent_id' => 3, 'name' => 'Category 1.1.1'),
    array('id' => 6, 'parent_id' => 2, 'name' => 'Category 2.1'),
);

$tree = buildTree($categories);
print_r($tree);

上述代码中,buildTree 函数接受一个分类数组和一个父级分类 ID,通过循环遍历数组,找到所有父级分类 ID 为给定值的分类,并递归调用 buildTree 函数来构建子分类树。最终返回构建好的分类树。

示例数据中的数组表示了一组分类数据,其中 parent_id 字段表示父级分类的 ID。运行上述代码会输出如下结果:

Array
(
    [0] => Array
        (
            [id] => 1
            [parent_id] => 0
            [name] => Category 1
            [children] => Array
                (
                    [0] => Array
                        (
                            [id] => 3
                            [parent_id] => 1
                            [name] => Category 1.1
                            [children] => Array
                                (
                                    [0] => Array
                                        (
                                            [id] => 5
                                            [parent_id] => 3
                                            [name] => Category 1.1.1
                                        )

                                )

                        )

                    [1] => Array
                        (
                            [id] => 4
                            [parent_id] => 1
                            [name] => Category 1.2
                        )

                )

        )

    [1] => Array
        (
            [id] => 2
            [parent_id] => 0
            [name] => Category 2
            [children] => Array
                (
                    [0] => Array
                        (
                            [id] => 6
                            [parent_id] => 2
                            [name] => Category 2.1
                        )

                )

        )

)

输出结果是一个层级嵌套的数组,表示了分类的层级关系。

上一篇:ajax 获得php(ajax实战)

下一篇:php-fpm设置并发?(关闭php-fpm)

大家都在看

php session用法

php 定义常量

phpisset函数

php html转图片

php后端

php爬虫框架

php读取csv文件

php+mysql动态网站开发

phpmyadmin docker

php session id

Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3

Laravel 中文站