ホームページ > バックエンド開発 > PHPチュートリアル > 配列リストを階層ツリー構造に効率的に変換するにはどうすればよいですか?

配列リストを階層ツリー構造に効率的に変換するにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2024-12-04 14:21:10
オリジナル
164 人が閲覧しました

How to Efficiently Convert an Array List into a Hierarchical Tree Structure?

配列リストから配列ツリーを作成する

階層関係を持つ要素のリストがある場合、それをツリー状に変換します。構造が重要になる可能性があります。この変換は、効率的な編成と取得が必要な複雑なデータを扱う場合に特に役立ちます。

例として次のリストを考えてみましょう:

[
  {id: 100, parentId: 0, name: 'a'},
  {id: 101, parentId: 100, name: 'a'},
  {id: 102, parentId: 101, name: 'a'},
  {id: 103, parentId: 101, name: 'a'},
]
ログイン後にコピー

目標は、このリストを階層的に再編成することです。ツリー構造。各要素はその親とその子 (存在する場合) への参照を持ちます。

この変換を達成するための 1 つの効果的なアプローチは、次のように示されます。次のコード スニペット:

<?php

$arr = [
    ['id' => 100, 'parentId' => 0, 'name' => 'a'],
    ['id' => 101, 'parentId' => 100, 'name' => 'a'],
    ['id' => 102, 'parentId' => 101, 'name' => 'a'],
    ['id' => 103, 'parentId' => 101, 'name' => 'a'],
];

$new = [];
foreach ($arr as $a) {
    $new[$a['parentId']][] = $a;
}
$tree = createTree($new, [$arr[0]]);
print_r($tree);

function createTree(&$list, $parent) {
    $tree = [];
    foreach ($parent as $k => $l) {
        if (isset($list[$l['id']])) {
            $l['children'] = createTree($list, $list[$l['id']]);
        }
        $tree[] = $l;
    }
    return $tree;
}
ログイン後にコピー

このコードは、parentId に基づいて要素をグループ化することにより、入力リストを効率的に処理します。次に、ツリー構造を再帰的に構築し、各要素にその子を設定します。結果として得られるツリーは、元のリストの階層表現を提供し、親子関係に基づいてデータの移動と取得を容易にします。

以上が配列リストを階層ツリー構造に効率的に変換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート