用户
 找回密码
 入住 CI 中国社区
搜索
查看: 1969|回复: 1
收起左侧

[HELP] 新手写无限级分类的错误

[复制链接]
发表于 2012-8-10 16:02:41 | 显示全部楼层 |阅读模式
想学习一下递归,于是写了一个无限级分类,但是有错误发生:

外部已经设定了pid=0;
PHP复制代码
public function get_cats($pid,$arr=""){  
  if(count($arr)==0){
   $arr = array();
  }
  $where = array('pid' => $pid);
  $result = $this->Cats_Model->select($where); //获得顶级分类数据
  if(count($result)!==0){
   foreach($result as $key=>$value){
    $arr[] = $value;
    $this->get_cats($value['cid'],$arr); //用递归方式获取下级分类  
   }  
  }
  return $arr;
 }
复制代码


但是只能获取到顶级分类,下级的获取不到了
发表于 2012-8-10 20:40:34 | 显示全部楼层
本帖最后由 wx2650 于 2012-8-10 20:48 编辑

PHP复制代码
 
private function getnewstype()
{
  $this->load->model('tbnewstype_Mod');
  $query = $this->tbnewstype_Mod->get_tbnewstype("NTGrade != 0 AND NTParentID=1");//获得首页下所有子节点
  $data = $this->addchildnode($query);
  return $data;
}
private function addchildnode($query,$indata = array())
{
  $data = $indata;
  $split = '┗━';
  foreach ($query as $row)
  {
   $blank = '';
   for($i=0;$i<$row->NTGrade-1;$i++)
   {
    $blank .= "  ";
   }
   $row->NTName = $blank.$split.$row->NTName;
   
   array_push($data, $row);
   $temp = $this->tbnewstype_Mod->get_tbnewstype("NTGrade != 0 AND NTParentID = " . $row->NTID);
   if(count($temp)>0)
   {
    $data = $this->addchildnode($temp, $data);//递归的方法获取所有子节点
   }
  }
  return $data;
}
 
 
复制代码



给出我的

效果如图


本版积分规则