muhammetsafak/data-tree

将一维数组转换为具有关系的多维树。

0.1 2023-01-14 16:37 UTC

This package is auto-updated.

Last update: 2024-09-14 20:40:48 UTC


README

这个简单的库/类允许您使用一维数组获取树结构。

注意:此库处理包含1,000,000个元素的数组大约需要1.10秒,使用超过400MB的内存。请记住,处理的数据越大,所需的内存和时间就越多。

安装

composer require muhammetsafak/data-tree

用法

require_once "vendor/autoload.php";
use MuhammetSafak\DataTree\TreeGenerator;

$data = [
    ['ID' => 1, 'parent_id' => 0, 'random_name' => 'Random #1'],
    ['ID' => 2, 'parent_id' => 0, 'random_name' => 'Random #2'],
    ['ID' => 3, 'parent_id' => 1, 'random_name' => 'Random #3'],
    ['ID' => 4, 'parent_id' => 2, 'random_name' => 'Random #4'],
    ['ID' => 5, 'parent_id' => 0, 'random_name' => 'Random #5'],
    ['ID' => 6, 'parent_id' => 2, 'random_name' => 'Random #6'],
];

$tree = (new TreeGenerator($data))
    ->setRelation('id', 'parentId')
    ->setReName('ID', 'id')
    ->setReName('parent_id', 'parentId')
    ->setReName('random_name', 'name')
    ->setChildNodeName('@childrens')
    ->toTree();

print_r($tree);

输出

Array
(
    [0] => Array
        (
            [id] => 1
            [parentId] => 0
            [name] => Random #1
            [@childrens] => Array
                (
                    [0] => Array
                        (
                            [id] => 3
                            [parentId] => 1
                            [name] => Random #3
                        )

                )

        )

    [1] => Array
        (
            [id] => 2
            [parentId] => 0
            [name] => Random #2
            [@childrens] => Array
                (
                    [0] => Array
                        (
                            [id] => 4
                            [parentId] => 2
                            [name] => Random #4
                        )

                    [1] => Array
                        (
                            [id] => 6
                            [parentId] => 2
                            [name] => Random #6
                        )

                )

        )

    [2] => Array
        (
            [id] => 5
            [parentId] => 0
            [name] => Random #5
        )

)

致谢

许可证

版权所有 © 2022 MIT许可证