• php 无限极分类


    无限极分类1:

      

     1 public function judeg($id)
     2 {
     3    $rs = Db::name('finance_class') -> field('parent_code') -> where('id',$id) -> select();
     4    $i = 1;
     5    foreach($rs as $k => $v){
     6      if($v['parent_code'] <> 0){
     7        $i += $this -> judeg($v['parent_code']);
     8       }
     9    }
    10    return $i;
    11 }
    12 
    13  public function cid($id,$pid)
    14  {
    15     $w['parent_code'] = $id;
    16     $rs = Db::name('finance_class')
    17        -> field('id,code,name,parent_code')
    18        -> where($w)
    19        -> order('code asc')
    20        -> select();
    21     $str = '';
    22     foreach ($rs as $k => $v) {
    23         $name = $v['name'];
    24         $_id = $v['id'];
    25         $cutOff = '';
    26         for($i = 0; $i < $this -> judeg($_id); $i++){
    27           $cutOff.='-';
    28         }
    29         if($_id == $pid){
    30           $str.='<p>他的id='.$_id.'====他的级别'.$cutOff.$name.'</p>';
    31         }else{
    32           $str.='<p>他的id='.$_id.'====他的级别'.$cutOff.$name.'</p>';
    33         }
    34         $str.=$this->cid($_id,$pid);
    35     }
    36     return $str;
    37}
    38 public function finance_c()
    39 {
    40    $w['type'] = '资产类';
    41    $w['parent_code'] = 0;
    42    $rs = Db::name('finance_class')
    43        -> field('id,code,name,parent_code')
    44        -> where($w)
    45         -> select();
    46    $str = '';
    47    foreach ($rs as $k => $v){
    48      $str.= '<p>一级name:'.$v['name'].'</p>';
    49      $str.=    $this -> cid($v['id'],0);
    50    }
    51    echo $str;
    52 }

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

    方法2:

     1 public function getVoucherClass()
     2 {
     3     $lists = Db::name('finance_class')->select();
     4 
     5     $lists = $this->getTree($lists);
     6 
     7     foreach($lists as $value){
     8       echo str_repeat('--', $value['level']), $value['name'].'<br />';
     9     }
    10}
    11 
    12 /**
    13 * 递归实现无限极分类
    14 * @param $array 分类数据
    15 * @param $pid 父ID
    16 * @param $level
    17 * @return $list 
    18 */
    19 function getTree($array, $pid =0, $level = 0){
    20    static $list = [];
    21    foreach ($array as $key => $value){
    22      if ($value['parent_code'] == $pid){
    23         $value['level'] = $level;
    24          $list[] = $value;
    25          unset($array[$key]);
    26          $this->getTree($array, $value['id'],$level+1);
    27       }
    28    }
    29    return $list;
    30}

    无限极分类3:

     1    public function index()
     2     {
     3        $lists = 	hinkDb::table('ozyx_finance_class')->select();
     4        $lists = $this->getTree($lists,0);
     5 
     6        foreach ($lists as $k => $v) {
     7                $lists_one[$v['type']][]=$v;
     8        }
     9 
    10        // halt($lists_one);
    11        $this->assign('lists', $lists_one);
    12 
    13        return view();
    14     }
    15 
    16     /**
    17     * 无限极分类
    18     */
    19     function getTree($data, $pid)
    20     {
    21         $tree = '';
    22         foreach($data as $k => $v)
    23         {
    24           if($v['parent_code'] == $pid)
    25           {        
    26                $v['parent_code'] = $this->getTree($data, $v['id']);
    27                $tree[] = $v;
    28                   unset($data[$k]);
    29           }
    30         }
    31         return $tree;
    32     }

    数据表结构:

  • 相关阅读:
    JavaScript 语句
    JavaScript语法
    JavaScript输出
    JavaScript用法
    JavaScript简介
    利用IDEA构建springboot应用-构建好SpringBoot + SSM 框架
    SP2010开发和VS2010专家"食谱"--第二章节--工作流(4)--创建自定义任务表单
    SP2010开发和VS2010专家"食谱"--第二章节--工作流(3)--创建工作流里的任务
    SP2010开发和VS2010专家"食谱"--第二章节--工作流(2)--部署工作流的InfoPath表单
    SP2010开发和VS2010专家"食谱"--第二章节--工作流(1)--创建带有初始表单的网站工作流
  • 原文地址:https://www.cnblogs.com/CcPz/p/9860394.html
Copyright © 2020-2023  润新知