PHP でフラット配列からツリーを構築する
階層データ構造を扱うときの一般的なタスクは、フラット配列をフラット配列に変換することです。木のような構造。これは、親子関係を識別し、それに応じて要素をネストすることで実行できます。
これにアプローチする 1 つの方法は、配列を反復処理して各要素のparent_id 値を調べることです。要素のparent_idがゼロの場合、その要素はルート レベルの項目とみなされます。他の要素については、parent_id を使用してツリー内の階層を決定できます。
元の配列を保持するには、要素をツリーに追加するときに要素のコピーを作成することをお勧めします。これは、array_values() 関数を使用して実現できます。
実装例は次のとおりです:
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; } } return $branch; }
結果のツリーに要素が重複しないようにするには、処理された要素の設定を解除することが重要です。元の配列。これは、ループ内に次のコード行を追加することで実行できます。
unset($elements[$element['id']]);
この改訂された関数を使用すると、フラット配列を階層ツリー構造に変換できます。結果は、各親要素の下にネストされた子要素を持つ配列になります。
以上がPHP でフラット配列からツリー構造を構築する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。