admin 发表于 2022-7-14 21:40:02

thinkphp 递归菜单 无限极分类

/**
   * 获取所有菜单
   * @return array
   * @throws \think\db\exception\DataNotFoundException
   * @throws \think\db\exception\DbException
   * @throws \think\db\exception\ModelNotFoundException
   */
    static public function getMenuAll(){
      $res=self::where('hid',0)->field('id,pid,url,icon,title,sort,group')->order('pid', 'asc')->select()->toArray();
      return self::makeArr($res);
    }
    /**
   * 递归循环
   * @param $res总数组
   * @param int $pid 父级id
   * @return array
   */
    staticpublic function makeArr($res, $pid=0){
      $arr = [];
      $item['pid']=$pid;
      $data=self::screen($res,$item);
      foreach ($data as $key=>$val){
            $ite['pid']=$val['id'];
            $result = self::screen($res,$ite);
            if (!empty($result)){
               $val['child']= self::makeArr($res,$val['id']);
            }
            $arr[] = $val;
      }
      return$arr;
    }

    /**
   * 数组键值对查询 返回查询数组
   * @param $res
   * @param $val
   * @return array
   */
    static public function screen($res,$val){
      return array_filter($res,function ($var) use ($val){
            if($var['pid']==$val['pid']) return true;
      });
    }
页: [1]
查看完整版本: thinkphp 递归菜单 无限极分类