在php中递归查询节点部门树下,我已经查询出所有的部门树节点id,我想根据前台传过来的根节点id,在php后台中递归出所有前台传过来的根节点的子节点,我想问问这种方式可行不,如果可行,应该怎么实现? 分享到: 更多 ------解决方案--------------------1.示例1function find_child($ar, $id='id', $pid='pid') { foreach($ar as $v) $t[$v[$id]] = $v; foreach ($t as $k => $item){ if( $item[$pid] ) { $t[$item[$pid]]['child'][] =&$t[$k]; unset($t[$k]); } } return $t;}$data = array( array('ID'=>1,'PARENT'=>0,'NAME'=>'kobe'), array('ID'=>2,'PARENT'=>0,'NAME'=>'jama'), array('ID'=>3,'PARENT'=>1,'NAME'=>'kobe1'), array('ID'=>4,'PARENT'=>2,'NAME'=>'jama1'), array('ID'=>5,'PARENT'=>0,'NAME'=>'lizhi'), array('ID'=>6,'PARENT'=>1,'NAME'=>'kobe2'),);$c = find_child($data, 'ID', 'PARENT');echo '';print_r($c);?>2.示例2function find_child($ar, $id='id', $pid='pid') { foreach($ar as $v) $t[$v[$id]] = $v; foreach ($t as $k => $item){ if( $item[$pid] ) { $t[$item[$pid]]['child'][] =&$t[$k]; unset($t[$k]); } } return $t;}$data = array( array('ID'=>1,'PARENT'=>0,'NAME'=>'kobe'), array('ID'=>2,'PARENT'=>0,'NAME'=>'jama'), array('ID'=>3,'PARENT'=>1,'NAME'=>'kobe1'), array('ID'=>4,'PARENT'=>2,'NAME'=>'jama1'), array('ID'=>5,'PARENT'=>0,'NAME'=>'lizhi'), array('ID'=>6,'PARENT'=>1,'NAME'=>'kobe2'),);$c = find_child($data, 'ID', 'PARENT');echo '';print_r($c);?>登入後複製------解决方案--------------------$arr = array( 1=>array('id'=>'1','name'=>'1','pid'=>'0'), 2=>array('id'=>'2','name'=>'2','pid'=>'0'), 3=>array('id'=>'3','name'=>'11','pid'=>'1'), 4=>array('id'=>'4','name'=>'22','pid'=>'2'),);function tree($arr){ $t = array(); foreach($arr as $v){ if (isset($arr[$v['pid']])){ $arr[$v['pid']]['child'][] = &$arr[$v['id']]; }else{ $t[] = &$arr[$v['id']]; } } return $t;}echo '';print_r(tree($arr)); 登入後複製