PHPにおける再帰的カテゴリ構造の作成方法

PHPで無限階層のカテゴリーを管理する場合、以下の方法が広く使われています。

  1. 階層的なカテゴリーを表す多次元配列を作成します。それぞれのカテゴリーにはIDと親IDがあり、親IDはそのカテゴリーの親カテゴリーのIDを表しています。そして、多次元配列を走査して親IDに基づいて子カテゴリーを対応する親カテゴリーに追加する再帰関数を作成します。最終的な階層的なカテゴリーの結果を格納するために空の配列を使用します。

以下はサンプルのコードです

function buildTree($categories, $parent_id = 0) {
    $tree = array();
    
    foreach ($categories as $category) {
        if ($category['parent_id'] == $parent_id) {
            $children = buildTree($categories, $category['id']);
            if (!empty($children)) {
                $category['children'] = $children;
            }
            $tree[] = $category;
        }
    }
    
    return $tree;
}

使用方法の例:

$categories = array(
    array('id' => 1, 'name' => '分类1', 'parent_id' => 0),
    array('id' => 2, 'name' => '分类2', 'parent_id' => 0),
    array('id' => 3, 'name' => '分类3', 'parent_id' => 1),
    array('id' => 4, 'name' => '分类4', 'parent_id' => 1),
    array('id' => 5, 'name' => '分类5', 'parent_id' => 2),
    array('id' => 6, 'name' => '分类6', 'parent_id' => 3),
    array('id' => 7, 'name' => '分类7', 'parent_id' => 3),
);

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

ネイティブな日本語でこの文章を言い換えてください。1つのオプションのみが必要です。

Array
(
    [0] => Array
        (
            [id] => 1
            [name] => 分类1
            [parent_id] => 0
            [children] => Array
                (
                    [0] => Array
                        (
                            [id] => 3
                            [name] => 分类3
                            [parent_id] => 1
                            [children] => Array
                                (
                                    [0] => Array
                                        (
                                            [id] => 6
                                            [name] => 分类6
                                            [parent_id] => 3
                                        )
                                    [1] => Array
                                        (
                                            [id] => 7
                                            [name] => 分类7
                                            [parent_id] => 3
                                        )
                                )
                        )
                    [1] => Array
                        (
                            [id] => 4
                            [name] => 分类4
                            [parent_id] => 1
                        )
                )
        )
    [1] => Array
        (
            [id] => 2
            [name] => 分类2
            [parent_id] => 0
            [children] => Array
                (
                    [0] => Array
                        (
                            [id] => 5
                            [name] => 分类5
                            [parent_id] => 2
                        )
                )
        )
)

таким образом, многомерный массив может быть преобразован в бесконечный классификатор на основе иерархических отношений.

bannerAds