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

WBOY
Freigeben: 2016-06-13 11:45:39
Original
1295 Leute haben es durchsucht

在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 />
Nach dem Login kopieren

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

$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>
Nach dem Login kopieren
Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!