递归遍历一个二维数组,只得每一级的第一个节点
递归遍历一个二维数组,数组的形式见函数下面的数据,遍历的目的是组成一个层层包含的json结构,问题是现在只得每一级的第一个节点, 而且结果变量里面,根本没有东西,这个代码复制后就可以使用。请大家帮忙看看
<?php
function buildDepartmentByRecursion($srcArray, $departJsonResultArray, $superdeptid){
//对一个二维数组进行遍历
if(is_array($srcArray)){
foreach($srcArray[$superdeptid] as $key => $dept){
//不用管上一层的结构,因为顶级部门的父id,就是0,在树节点上是不显示的。
//构造本部门的json结构
$tempArray = array();
$dept_id = $dept[departmentid];
$tempArray['id'] = "".$dept_id;
$tempArray['txt'] = $dept[dept_name];
//echo($dept[dept_name]);
//如果没有子部门了 那么返回
if($srcArray[$dept_id] == null || count($srcArray[$dept_id]) < 1){
echo($dept[dept_name]."没有子部门");
return $tempArray;
}
echo($dept[dept_name]."有子部门");
//如果有子部门 那么继续递归
$tempArray = buildDepartmentByRecursion($srcArray ,$departJsonResultArray, $dept_id, $level+1);
//将本层已经递归后的顶级部门数据添加到结果数据
$departJsonResultArray[] = $tempArray;
}
}
//return $departJsonResultArray;
}
$sourceArr = array(
array("departmentid"=>1, "dept_name"=>"顶级部门","super_dept_id"=>0),
array("departmentid"=>2, "dept_name"=>"二级部门1","super_dept_id"=>1),
array("departmentid"=>3, "dept_name"=>"二级部门2","super_dept_id"=>1),
array("departmentid"=>4, "dept_name"=>"二级部门3","super_dept_id"=>1),
array("departmentid"=>5, "dept_name"=>"三级部门1","super_dept_id"=>2),
array("departmentid"=>6, "dept_name"=>"三级部门2","super_dept_id"=>2)
);
$arr = array();
$i=1;
$arr[0][1]=$sourceArr[1-$i];
$arr[1][2]=$sourceArr[2-$i];
$arr[1][3]=$sourceArr[3-$i];
$arr[1][4]=$sourceArr[4-$i];
$arr[2][5]=$sourceArr[5-$i];
$arr[2][6]=$sourceArr[6-$i];
$result = array();
buildDepartmentByRecursion($arr, $result, 0);
print_r($result);
?>