Maison >php教程 >php手册 >史上最简单的无限级分类实现

史上最简单的无限级分类实现

WBOY
WBOYoriginal
2016-06-07 11:43:091222parcourir

史上最简单的无限级分类实现 查询也比较简单
史上最简单的无限级分类实现 查询也比较简单 此方法仅限于数据量小的情况下使用。
还是以分类为例吧
我们在添加分类的时候都要选择上级分类,此是就要用到无限级分类
在控制器中的add方法里面加入以下代码public function add(){<br>         $category=D('Category');<br>         //查询出所有分类 以树状显示<br>         $allcat=$category->order('id ASC')->select();<br>         $list=$this->getTree($allcat,0);<br>         $this->assign('allcat',$list);<br>         $this->display();<br>     }然后写一个公共方法getTree();此方法可以放到公共函数中public function getTree($list, $parent_id, $level=0) {<br>         //应该是静态的局部变量,这样才能保证,在递归调用时,所有<br>         //的getTree方法,操作的是一个Tree空间。<br>         static $tree = array();//保存找到的分类的数组<br>         //遍历所有分类,通过parent_id判断,哪些是我们正在查找的<br>         foreach($list as $row) {<br>             //判断当前所遍历的分类$row, 是否是当前需要查找的子分类<br>             if($row['pid'] == $parent_id) {<br>                 //找到了一个分类<br>                 //存起来,存哪?<br>                 $row['level'] = $level;<br>                 $tree[] = $row;<br>                 //继续查找当前$row所代表的分类的子分类<br>                 $this->getTree($list, $row['id'], $level+1);<br>             }<br>         }<br>         return $tree;<br>     }此方法用到了递归,所以会影响运行效率
在前台模版中使用以下代码<select><br>                 <option>作为一级分类</option> <br>                 <volist><br>                     <option> <?php echo ("★", $cat[&#039;level&#039;]);?>{$cat.name}</option> <br>                 </volist><br>             </select>一星是二级请高手们帮我把此段代码替换一下 我没找到TP里面是否有相关函数和方法
看到这儿你是不是觉得比其它方法更简单呢

AD:真正免费,域名+虚机+企业邮箱=0元

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn