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

php数组如何转树状结构

作者:一岁就很帅   发布日期:2024-02-10   浏览:535

要将 PHP 数组转换为树状结构,可以使用递归的方式来实现。下面是一个示例代码:

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

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

    return $tree;
}

// 示例数据
$array = array(
    array('id' => 1, 'name' => 'Node 1', 'parent_id' => 0),
    array('id' => 2, 'name' => 'Node 1.1', 'parent_id' => 1),
    array('id' => 3, 'name' => 'Node 1.2', 'parent_id' => 1),
    array('id' => 4, 'name' => 'Node 1.2.1', 'parent_id' => 3),
    array('id' => 5, 'name' => 'Node 2', 'parent_id' => 0),
    array('id' => 6, 'name' => 'Node 2.1', 'parent_id' => 5),
    array('id' => 7, 'name' => 'Node 2.2', 'parent_id' => 5),
);

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

上述代码中的 buildTree 函数接受一个数组和一个父节点 ID,然后遍历数组中的每个元素,如果元素的 parent_id 等于当前父节点 ID,则将该元素添加到树中,并递归调用 buildTree 函数来构建子树。最后返回构建好的树。

示例数据中的数组表示了一个树状结构,输出结果如下:

Array
(
    [0] => Array
        (
            [id] => 1
            [name] => Node 1
            [parent_id] => 0
            [children] => Array
                (
                    [0] => Array
                        (
                            [id] => 2
                            [name] => Node 1.1
                            [parent_id] => 1
                        )

                    [1] => Array
                        (
                            [id] => 3
                            [name] => Node 1.2
                            [parent_id] => 1
                            [children] => Array
                                (
                                    [0] => Array
                                        (
                                            [id] => 4
                                            [name] => Node 1.2.1
                                            [parent_id] => 3
                                        )

                                )

                        )

                )

        )

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

                    [1] => Array
                        (
                            [id] => 7
                            [name] => Node 2.2
                            [parent_id] => 5
                        )

                )

        )

)

输出结果中的每个节点都包含一个 children 属性,表示该节点的子节点。

上一篇:php如何求出两个数组的和

下一篇:php移除数组最后一个元素的方法有哪些

大家都在看

php session用法

phpisset函数

php后端

php爬虫框架

php读取csv文件

php 三元表达式

php文件加密

php 拆分字符串

php pcntl

php ||

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

Laravel 中文站