• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    CMSPRESS 10行代码搞定 PHP无限级分类2

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

    核心代码如下

    class Tool {
      static public $treeList = array(); //存放无限分类结果如果一页面有多个无限分类可以使用 Tool::$treeList = array(); 清空
      /**
       * 无限级分类
       * @access public 
       * @param Array $data   //数据库里获取的结果集 
       * @param Int $pid       
       * @param Int $count    //第几级分类
       * @return Array $treeList  
       */
      static public function tree($data,$pid = 0,$count = 1) {
        foreach ($data as $key => $value){
          if($value['Pid']==$pid){
            $value['Count'] = $count;
            self::$treeList []=$value;
            unset($data[$key]);
            self::tree($data,$value['Id'],$count+1);
          } 
        }
        return self::$treeList ;
      }  
    }

    $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

    //默认列表
      public function index() {  
        $menu = M('Menu');
        $list = $menu->order('Pid ASC,Morder DESC,Id ASC')->select();
        $this->assign('List',Tool::tree($list));  
             $this->display();
      }

    控制器里调用

    td style="text-indent:{$vo['Count']*20}>px;">neq name="vo.Count" value="1">| -- /neq>{$vo.Name}>/td>

    模板使用里volist> 正常输出即可 把需要生成树结构的字段 修改成如上

    测试了 如果是3000条的话 用时 0.5秒 1000个的话 0.02秒的左右 超过3000效率就会大幅度降低 2000左右的效率还是比较高的 没有进行更详细的测试

    如果哪位大哥测试了 麻烦把测试结果回复下哈

    上一篇:PHP实现动态删除XML数据的方法示例
    下一篇:PHPTree——php快速生成无限级分类
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    CMSPRESS 10行代码搞定 PHP无限级分类2 CMSPRESS,10行,代码,搞定,PHP,