在php中递归查询节点,该如何处理
程序员文章站
2022-03-07 14:01:25
...
在php中递归查询节点
部门树下,我已经查询出所有的部门树节点id,我想根据前台传过来的根节点id,在php后台中递归出所有前台传过来的根节点的子节点,我想问问这种方式可行不,如果可行,应该怎么实现?
------解决方案--------------------
部门树下,我已经查询出所有的部门树节点id,我想根据前台传过来的根节点id,在php后台中递归出所有前台传过来的根节点的子节点,我想问问这种方式可行不,如果可行,应该怎么实现?
------解决方案--------------------
1.示例1
function 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.示例2
function 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));相关文章
相关视频
上一篇: mysql怎么实现递归查询数据
推荐阅读
-
在Filecoin挖矿中,我们该如何部署多节点集群矿池?集群矿池有什么优势
-
php从数据库中选取ID在数组中存在的记录,并按数组中的顺序排列?该如何处理
-
php在HTML中输出变量为空,该如何解决
-
php 递归函数 求解,该如何处理
-
php正则表达中求教,该如何处理
-
apache+MySQL+php,把phpmyadmin放到htdocs根目录下,在地址栏中输入http://localhost/phpMyAdmin,该如何解决
-
php的include和ob函数在循环中导致的,该如何处理
-
php的include和ob函数在循环中导致的,该如何处理
-
php addslashes在什么地方用,为什么?该如何处理
-
SQL查询中的{}是干什么的?该如何处理