应用场景:
通过web接口获取到无限分类部门的数据,部门数据解析出来的格式为一个二维数组。由于是自己临时写了一个简易的小框架,未加入缓存机制,因此只能一下把部门全部展示到页面上,可递归实现,但复杂度太高。
解决方法:
前提还是使用递归方法进行操作,只不过对通过接口获取的数据生成一个新的三维数组,然后进行递归操作,复杂度比较低。(若有大神有更加简单的方法,请解答,拜谢。)
实现方法:
1、处理通过接口获取到的数据。
/*
* 将拉取到的部门数据处理成三维数组
* @param $dept array json解析出来的数组
* @return array
* */
function dept_enarray($dept = array()){
$dept_array = array();
foreach($dept as $key => $val){
if($val['parentno']){
$dept_array[$val['parentno']][0][] = $val;
}else{
$dept_array[0][] = $val;
}
}
return $dept_array;
}
2、对处理得到的三维数组进行递归操作,然后生成html。
/*
* 构建组织部门树
* @param $orgdept array dept_enarray函数处理过的数组
* @param $html string html标签内容
* @param $lv int 当前的操作等级
* @param $parentarr array 拥有子部门的部门编码
* @param $orgarr array 原始传入的数组
* return string html
* */
function get_depttree($orgdept,$html = '',$lv=1, $parentarr = '', $orgarr = ''){
$vl = $lv;
if(!$orgarr)
$orgarr = $orgdept;
if(!$parentarr