Home > php教程 > php手册 > 10行代码搞定 无限级分类 正常输出 效率极高

10行代码搞定 无限级分类 正常输出 效率极高

WBOY
Release: 2016-06-07 11:44:57
Original
1213 people have browsed it

超级无限分类 使用简单 效率极高 核心代码10行不到
另外 求这个分类的不足,和更高效简单的无限分类方法 ^_^

效果图
10行代码搞定 无限级分类 正常输出 效率极高
核心代码如下class Tool {<br>     static public $treeList = array(); //存放无限分类结果如果一页面有多个无限分类可以使用 Tool::$treeList = array(); 清空<br>     /**<br>      * 无限级分类<br>      * @access public <br>      * @param Array $data     //数据库里获取的结果集 <br>      * @param Int $pid             <br>      * @param Int $count       //第几级分类<br>      * @return Array $treeList   <br>      */<br>     static public function tree(&$data,$pid = 0,$count = 1) {<br>         foreach ($data as $key => $value){<br>             if($value['Pid']==$pid){<br>                 $value['Count'] = $count;<br>                 self::$treeList []=$value;<br>                 unset($data[$key]);<br>                 self::tree($data,$value['Id'],$count+1);<br>             } <br>         }<br>         return self::$treeList ;<br>     }<br>     <br> }$treeList[] 保存排序的结果 基本就是进行了一次排序 保存后就可以 unset($data[$key]); 掉 因为已经使用不到了
&$data 使用按地址传参,结合unset($data[$key]); 减少循环次数,这样效率提高了好几倍,
但需要对 Pid进行 ASC的排序 不然会显示不完全
$value['Count'] = $count; 为当前的等级 在模板里会通过等级进行生成树形结构

排序前后的数据结构如下
表所需要字段 Id,Pid
排序前的数据结构
id   pid
1    0
2    0
3    1
4     3

排序后的数据结构
id  pid  count
1   0    1
3   1   2
4   3    3
2   0   1


    //默认列表<br>     public function index() {    <br>         $menu = M('Menu');<br>         $list = $menu->order('<b>Pid ASC</b>,Morder DESC,Id ASC')->select();<br>         <b>$this->assign('List',Tool::tree($list));</b>    <br>                  $this->display();<br>     }控制器里调用       <td>px;"><neq>| -- </neq> </td>模板使用里 正常输出即可 把需要生成树结构的字段 修改成如上

刚学ThinkPHP二个星期 第一次发代码 嘿嘿

测试了 如果是3000条的话 用时 0.5秒 1000个的话 0.02秒的左右 超过3000效率就会大幅度降低 2000左右的效率还是比较高的 没有进行更详细的测试
如果哪位大哥测试了 麻烦把测试结果回复下哈

我的QQ:390391483 山 治

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

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Recommendations
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template