无限级递归

+++++++++++++++++++++++++++++++无限级递归+++++++++++++++++++++++++++
例一:
public function recursion(){

  $ar= $this->Cate($gittable,0,0);

  return view('home.home3',['arr1' => $ast,'arr2' => $navigation,'arr3' => $data]);
}


public function Cate(&$info, $child, $pid)
{
  $child = array();
  if(!empty($info)){//当$info中的子类还没有被移光的时候
    foreach ($info as $k => &$v) {
      if($v->Pid == $pid){//判断是否存在子类pid和返回的父类id相等的
        $v->child = $this->Cate($info, $child, $v->Tid);//每次递归参数为当前的父类的id
        $child[] = $v;//将$info中的键值移动到$child当中
        unset($info[$k]);//每次移动过去之后删除$info中当前的值
       }
     }
   }
   return $child;//返回生成的树形数组
}


例二:
public function recursion(){

  $model = new Recursion();//调用model层

  $navigation = $model->navigation();//调用地区

  $gittable = $model->gittable();//调用查询

  $ast = $this->Cate($gittable,0,0);

  return view('home.home3',['arr1' => $ast,'arr2' => $navigation,'arr3' => $data]);//展示给用户
}

public function Cate(&$info, $child, $pid)
{
  $child = array();
  if(!empty($info)){
  foreach ($info as $k => &$v) {
    if($v->p_id == $pid){
      $v->child = $this->Cate($info, $child, $v->r_id);
      $child[] = $v;
      unset($info[$k]);
    }
  }
  }
  return $child;//返回生成的树形数组
}


++++++++++++++++++++++++++++++++逆归+++++++++++++++++++++++++++++++
倒着来

 

以上两种方式太浪费资源,建议将递归的值,一组一组的存入缓存中,将节省大量资源!!!

转载于:https://www.cnblogs.com/54sen/p/6729439.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值