配列リストからツリー構造を構築する
階層関係を持つ項目の配列リストが与えられた場合、どうすればそれを効率的に変換できますか?入れ子になったツリー構造?
解決策:
複雑なデータベース最適化を使用せずにこの変換を達成するには、再帰関数を使用できます:
$arr = array( array('id' => 100, 'parentid' => 0, 'name' => 'a'), array('id' => 101, 'parentid' => 100, 'name' => 'a'), array('id' => 102, 'parentid' => 101, 'name' => 'a'), array('id' => 103, 'parentid' => 101, 'name' => 'a'), ); $new = array(); foreach ($arr as $a) { $new[$a['parentid']][] = $a; } $tree = createTree($new, array($arr[0])); print_r($tree); function createTree(&$list, $parent){ $tree = array(); foreach ($parent as $k => $l){ if(isset($list[$l['id']])){ $l['children'] = createTree($list, $list[$l['id']]); } $tree[] = $l; } return $tree; }
このコード項目を入れ子の階層構造に配置し、項目間の親子関係を表します。結果のツリー構造は、print_r を使用して印刷できます。
再帰関数を利用することで、配列リストをツリー構造に効率的に変換でき、データのナビゲーションと整理が容易になります。
以上が階層配列リストからツリー構造を効率的に構築するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。