• 技术文章 >后端开发 >php教程

    php如何实现无限极分类?无限极分类的三种实现方法(代码详解)

    青灯夜游青灯夜游2018-10-29 16:16:47转载3626
    本篇文章给大家带来的内容是介绍php如何实现无限极分类?无限极分类的三种实现方法(代码详解)。有一定的参考价值,有需要的朋友可以参考一下,希望对你们有所帮助。

    无限极分类1:

    public function judeg($id)
    {
       $rs = Db::name('finance_class') -> field('parent_code') -> where('id',$id) -> select();
       $i = 1;
       foreach($rs as $k => $v){
         if($v['parent_code'] <> 0){
           $i += $this -> judeg($v['parent_code']);
          }
       }
       return $i;
    }
    
     public function cid($id,$pid)
     {
        $w['parent_code'] = $id;
        $rs = Db::name('finance_class')
           -> field('id,code,name,parent_code')
           -> where($w)
           -> order('code asc')
           -> select();
        $str = '';
        foreach ($rs as $k => $v) {
            $name = $v['name'];
            $_id = $v['id'];
            $cutOff = '';
            for($i = 0; $i < $this -> judeg($_id); $i++){
              $cutOff.='-';
            }
            if($_id == $pid){
              $str.='<p>他的id='.$_id.'====他的级别'.$cutOff.$name.'</p>';
            }else{
              $str.='<p>他的id='.$_id.'====他的级别'.$cutOff.$name.'</p>';
            }
            $str.=$this->cid($_id,$pid);
        }
        return $str;
    37}
    public function finance_c()
    {
       $w['type'] = '资产类';
       $w['parent_code'] = 0;
       $rs = Db::name('finance_class')
           -> field('id,code,name,parent_code')
           -> where($w)
            -> select();
       $str = '';
       foreach ($rs as $k => $v){
         $str.= '<p>一级name:'.$v['name'].'</p>';
         $str.=    $this -> cid($v['id'],0);
       }
       echo $str;
    }

    这个方法出来的效率慢,而且很绕。

    方法2:

    public function getVoucherClass()
    {
        $lists = Db::name('finance_class')->select();
    
        $lists = $this->getTree($lists);
    
        foreach($lists as $value){
          echo str_repeat('--', $value['level']), $value['name'].'<br />';
        }
    10}
    
    /**
    * 递归实现无限极分类
    * @param $array 分类数据
    * @param $pid 父ID
    * @param $level
    * @return $list 
    */
    function getTree($array, $pid =0, $level = 0){
       static $list = [];
       foreach ($array as $key => $value){
         if ($value['parent_code'] == $pid){
            $value['level'] = $level;
             $list[] = $value;
             unset($array[$key]);
             $this->getTree($array, $value['id'],$level+1);
          }
       }
       return $list;
    30}

    无限极分类3:

     public function index()
        {
           $lists = \think\Db::table('ozyx_finance_class')->select();
           $lists = $this->getTree($lists,0);
    
           foreach ($lists as $k => $v) {
                   $lists_one[$v['type']][]=$v;
           }
    
           // halt($lists_one);
           $this->assign('lists', $lists_one);
    
           return view();
        }
    
        /**
        * 无限极分类
        */
        function getTree($data, $pid)
        {
            $tree = '';
            foreach($data as $k => $v)
            {
              if($v['parent_code'] == $pid)
              {        
                   $v['parent_code'] = $this->getTree($data, $v['id']);
                   $tree[] = $v;
                      unset($data[$k]);
              }
            }
            return $tree;
        }

    数据表结构:

    以上就是php如何实现无限极分类?无限极分类的三种实现方法(代码详解)的详细内容,更多请关注php中文网其它相关文章!

    声明:本文转载于:博客园,如有侵犯,请联系admin@php.cn删除
    专题推荐:php 无限极分类
    上一篇:frameset标签为什么无法显示?有什么解决方法 下一篇:thinkPHP5.0如何实现excel导入导出?(代码示例)
    大前端线上培训班

    相关文章推荐

    • JavaScript+CSS无限极分类效果完整实现方法_javascript技巧• PHP超牛逼无限极分类生成树方法_php技巧• php无限极分类递归排序 • PHP实现无限极分类图文教程_PHP

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网