一桶浆糊 发表于 2012-8-10 16:02:41

新手写无限级分类的错误

想学习一下递归,于是写了一个无限级分类,但是有错误发生:

外部已经设定了pid=0;
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;
}

但是只能获取到顶级分类,下级的获取不到了

wx2650 发表于 2012-8-10 20:40:34

本帖最后由 wx2650 于 2012-8-10 20:48 编辑

http://codeigniter.org.cn/forums/data/attachment/album/201208/10/204554la1x3agrrln7beu0.png.thumb.jpg
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;
}




给出我的

效果如图

http://codeigniter.org.cn/forums/data/attachment/album/201208/10/204554la1x3agrrln7beu0.png.thumb.jpghttp://codeigniter.org.cn/forums/border=0http://codeigniter.org.cn/forums/border=0
页: [1]
查看完整版本: 新手写无限级分类的错误