ホームページ > バックエンド開発 > PHPチュートリアル > 再帰関数はどのようにしてフラット データベースの結果から多次元配列を作成できるのでしょうか?

再帰関数はどのようにしてフラット データベースの結果から多次元配列を作成できるのでしょうか?

DDD
リリース: 2024-12-15 20:59:15
オリジナル
555 人が閲覧しました

How Can a Recursive Function Create a Multidimensional Array from a Flat Database Result?

データベース結果から多次元配列を生成する再帰関数

問題:

フラットな結果テーブルから階層的にネストされた配列を構築する、各行は項目とその親を表します。 ID.

解決策:

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;
}

$tree = buildTree($rows);
ログイン後にコピー

説明:

アルゴリズムは、再帰を使用して階層ツリー構造を反復的に構築します。

  1. 空の配列を初期化します$branch は、ツリーの現在のレベルを保存します。
  2. 要素を反復処理し、要素のparent_id が指定された $parentId と一致するかどうかを確認します。
  3. 一致が見つかった場合は、その要素を意味しますは現在の親の子であり、$branch に追加する必要があります。
  4. 要素の ID を使用して buildTree 関数を再帰的に呼び出します。新しい $parentId として子を検索します。
  5. 子が見つかった場合、それらはサブ配列として現在の要素に追加されます。
  6. すべての子を処理した後、$branch 配列階層の次のレベルを表すために返されます。
  7. 初期 $parentId が 0 の buildTree への最初の呼び出しは、階層のルート要素をフェッチします。再帰呼び出しにより、ネストされた構造が作成されます。

以上が再帰関数はどのようにしてフラット データベースの結果から多次元配列を作成できるのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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