配列リストから配列ツリーを作成する
階層関係を持つ要素のリストがある場合、それをツリー状に変換します。構造が重要になる可能性があります。この変換は、効率的な編成と取得が必要な複雑なデータを扱う場合に特に役立ちます。
例として次のリストを考えてみましょう:
[ {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 サイトの他の関連記事を参照してください。