PHP-0x590x610x6E0x67 2017-08-23 06:35 采纳率: 0%
浏览 1933
已结题

有一个部门数组,下面有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;
}
  • 写回答

1条回答 默认 最新

  • Tsui丶 2017-08-23 06:52
    关注

    看你的需求是怎么样的,如果说要全部取出来,那么我想应该也不存在覆盖的问题。如果说你只需要其中一个部门,先拿id进行判断是否为该部门,不是的话直接跳过,是的话才获取数据,之后直接结束循环就行了

    评论

报告相同问题?

悬赏问题

  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码