有一个部门数组,下面有id对应部门表id,请问怎么查找这个数组里每个元素下面所有的子元素?

图片说明
这是数组,每个一维数组代表一个部门,我现在怎么分别查找每个部门下的所有子部门,求各位大神解,我想到是要用递归实现,但我用递归时,第二次得到的会把第一次的数据也得到

这是控制器里代码
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进行判断是否为该部门,不是的话直接跳过,是的话才获取数据,之后直接结束循环就行了