のように
$old = 配列(
array('id'=>1,'pid'=>0,'name'=>'first'
)、
array('id'=>2,'pid'=>1,'name'=>'2 番目'
)
, array('id'=>3,'pid'=>2,'name'=>'third'),
);
print_r(list_to_tree($old,'id','pid','_child'));
出力は次のとおりです
$old = 配列(
array( 'id'=>1, 'pid'=>0, 'name'=>'first', '_child'=>array( 'id'=>2, ' pid' =>1, '名前'=>'2番目' '_child'=>array('id'=>3,'pid'=>2,'name'=>'3番目' ), )、
)
、
);
- /**
- * 返されたデータセットをツリーに変換します
- * @access public
- * @param array $list 変換するデータセット
- * @param string $pid 親タグフィールド
- * @param string $level レベルタグフィールド
- * @配列を返す
- */
- function list_to_tree($list, $pk='id',$pid = 'pid',$child = '_child',$root=0) {
- // 作成Tree
- $tree = array();
- if(is_array($list)) {
- // 主キーに基づいて配列参照を作成します
- $refer = array();
- foreach ($list as $key => $data) {
- $refer[$data[$pk]] =& $list[$key];
- }
- foreach ($list as $key => $data) {
- // 親が存在するかどうかを判定します
- $ parentId = $ data[$pid];
- if ($root == $parentId) {
- $tree[] =& $list[$key];
- }else{
- if (isset($refer[$parentId]) ) {
- $parent =& $refer[$parentId];
- $parent[$child][] =& $list[$key];
- }
- }
- }
- }
- return $tree;
- }
コードをコピー
|