这是数组,每个一维数组代表一个部门,我现在怎么分别查找每个部门下的所有子部门,求各位大神解,我想到是要用递归实现,但我用递归时,第二次得到的会把第一次的数据也得到
这是控制器里代码
foreach ($org as $kl => $vl) {
$allChildrenOrg = $organization->getOrgChildren($org[$kl]['id']); //查找当前部门下所有子部门
}
这是模型里代码:
public function getOrgChildren($id)
{
$tmp = [];
$children = $this->where('parent_id', $id)->select();
if (empty($children)) {
return;
} else {
foreach ($children as $value) {
$tmp['id'] = $value['id'];
$tmp['parent_id'] = $value['parent_id'];
$tmp['level'] = $value['level'];
$tmp['name'] = $value['name'];
$tmp['type'] = $value['type'];
array_unshift(self::$arr, $tmp);
$this->getOrgChildren($value['id']);
}
}
return self::$arr;
}
看你的需求是怎么样的,如果说要全部取出来,那么我想应该也不存在覆盖的问题。如果说你只需要其中一个部门,先拿id进行判断是否为该部门,不是的话直接跳过,是的话才获取数据,之后直接结束循环就行了