ホームページ >バックエンド開発 >PHPチュートリアル >PHP でフラット配列からツリー構造を効率的に構築するにはどうすればよいですか?
PHP でフラット配列からツリーを構築する
PHP でフラット配列からツリー データ構造を構築するのは困難な場合があります。ただし、このタスクは、再帰を適用し、フラット配列内の親子関係を理解することで簡素化できます。
各要素に 'id' と 'parent_id' があるフラット配列を想定すると、目的はそれを階層ツリーに変換することです。結果のツリー内の各要素に子要素がある場合は、「children」プロパティを持つ必要があります。
解決策
提供されたコードはツリーを再帰的に作成しようとしますが、要素をブランチに追加した後にその要素を削除できず、同じ要素のコピーが複数作成されます。この問題を解決するには、要素をブランチに追加した後、フラット配列から要素を削除する必要があります。
function buildTree(array &$elements, $parentId = 0) { $branch = array(); foreach ($elements as $element) { if ($element['parent_id'] == $parentId) { $children = buildTree($elements, $element['id']); if ($children) { $element['children'] = $children; } $branch[$element['id']] = $element; unset($elements[$element['id']]); } } return $branch; }
説明
結果の配列は次のようになります。ネストされた配列として子を含む各ノードを持つ階層ツリーとなり、元のフラットな配列の親子関係を明確に表現します。
以上がPHP でフラット配列からツリー構造を効率的に構築するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。