ホームページ >バックエンド開発 >PHPチュートリアル >フラット配列リストからネストされた配列ツリーを効率的に作成するには?

フラット配列リストからネストされた配列ツリーを効率的に作成するには?

Susan Sarandon
Susan Sarandonオリジナル
2024-12-25 18:50:10687ブラウズ

How to Efficiently Create a Nested Array Tree from a Flat Array List?

配列リストからネストされた配列ツリーを作成する

親子関係を持つ要素の配列があり、それを次のように変換したいと考えています。ネストされた配列ツリー。効率的な解決策は次のとおりです。

# Create a new array indexed by parent ID
$new = [];
foreach ($arr as $a) {
    $new[$a['parentid']][] = $a;
}

# Start with the root node
$tree = createTree($new, [$arr[0]]);

# Recursive function to build the tree
function createTree(&$list, $parent) {
    $tree = [];
    foreach ($parent as $l) {
        # If there are children, create children tree
        if (isset($list[$l['id']])) {
            $l['children'] = createTree($list, $list[$l['id']]);
        }

        # Add parent to the tree
        $tree[] = $l;
    }
    return $tree;
}

このアルゴリズムは、元の配列内の親子関係に基づいて、ネストされた配列ツリーを効率的に構築します。

以上がフラット配列リストからネストされた配列ツリーを効率的に作成するには?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。