在php中递归查询节点,该如何处理

WBOY
풀어 주다: 2016-06-13 11:45:39
원래의
1296명이 탐색했습니다.

在php中递归查询节点
部门树下,我已经查询出所有的部门树节点id,我想根据前台传过来的根节点id,在php后台中递归出所有前台传过来的根节点的子节点,我想问问这种方式可行不,如果可行,应该怎么实现?

------解决方案--------------------

<br />1.示例1<br /><?php<br />function find_child($ar, $id='id', $pid='pid') {<br />  foreach($ar as $v) $t[$v[$id]] = $v;<br />  foreach ($t as $k => $item){<br />    if( $item[$pid] ) {<br />    	$t[$item[$pid]]['child'][] =&$t[$k];<br />      	unset($t[$k]);<br />    }<br />  }<br />  return $t;<br />}<br />$data = array(<br />	array('ID'=>1,'PARENT'=>0,'NAME'=>'kobe'),<br />	array('ID'=>2,'PARENT'=>0,'NAME'=>'jama'),<br />	array('ID'=>3,'PARENT'=>1,'NAME'=>'kobe1'),<br />	array('ID'=>4,'PARENT'=>2,'NAME'=>'jama1'),	<br />	array('ID'=>5,'PARENT'=>0,'NAME'=>'lizhi'),	<br />	array('ID'=>6,'PARENT'=>1,'NAME'=>'kobe2'),<br />);<br /><br />$c = find_child($data, 'ID', 'PARENT');<br />echo '<pre class="brush:php;toolbar:false">';<br />print_r($c);<br />?><br /><br /><br />2.示例2<br /><?php<br /><br />function find_child($ar, $id='id', $pid='pid') {<br />  foreach($ar as $v) $t[$v[$id]] = $v;<br />  foreach ($t as $k => $item){<br />    if( $item[$pid] ) {<br />    	$t[$item[$pid]]['child'][] =&$t[$k];<br />      	unset($t[$k]);<br />    }<br />  }<br />  return $t;<br />}<br />$data = array(<br />	array('ID'=>1,'PARENT'=>0,'NAME'=>'kobe'),<br />	array('ID'=>2,'PARENT'=>0,'NAME'=>'jama'),<br />	array('ID'=>3,'PARENT'=>1,'NAME'=>'kobe1'),<br />	array('ID'=>4,'PARENT'=>2,'NAME'=>'jama1'),	<br />	array('ID'=>5,'PARENT'=>0,'NAME'=>'lizhi'),	<br />	array('ID'=>6,'PARENT'=>1,'NAME'=>'kobe2'),<br />);<br /><br />$c = find_child($data, 'ID', 'PARENT');<br />echo '<pre class="brush:php;toolbar:false">';<br />print_r($c);<br />?><br />
로그인 후 복사

------解决方案--------------------

$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));<br><div class="clear">
                 
              
              
        
            </div>
로그인 후 복사
관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!