新手写无限级分类的错误
想学习一下递归,于是写了一个无限级分类,但是有错误发生:外部已经设定了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: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]