0

重複の可能性:
リストから多次元配列を作成するには?
PHP リレーショナル データを含む配列から多次元配列を作成する

現在、データベースに親子モデルがあります。テーブルは次のようになります。

id         int  
parent_id  int
text       int

このテーブルのすべての列を取得するクエリを実行したと仮定するとSELECT *、この結果セットから多次元配列を構築するにはどうすればよいでしょうか。各配列には、parent_id が行 id と等しい子の配列が含まれます。 .

サンプルデータ:

id   parent_id   text
1     NULL       Blah1
2     1          Blah 2 
3     2          Blah3
4     1          Blah 4

最後に、その配列が構築されたら、それをどのように反復処理して、ツリーのようなインデント構造を出力しますか?

Blah1 
    Blah2
        Blah3
    Blah4

あなたの助けに感謝します。

4

1 に答える 1

0

これを試して

$items = array(
    array('id' => 1, 'parent_id' => null, 'text'=>'text'),
    array('id' => 2, 'parent_id' => 1 , 'text'=>'text'),
    array('id' => 3, 'parent_id' => 2, 'text'=>'text'),
    array('id' => 4, 'parent_id' => 1 , 'text'=>'text'),
);

$childs = array();

foreach($items as $item)
  $childs[$item['parent_id']][] = $item;

foreach($items as $item) if (isset($childs[$item['id']]))
  $item['childs'] = $childs[$item['id']];

$tree = $childs[0];

var_dump($tree);
于 2012-08-03T08:23:52.657 に答える