php 无限极分类

Posted Cc_Pz

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 = \\think\\Db::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     }

 

 

数据表结构:

 

以上是关于php 无限极分类的主要内容,如果未能解决你的问题,请参考以下文章

PHP无限极分类

PHP无限极分类 - 3 - 分类目录

php递归无限极分类怎么弄

关于PHP无限极分类

PHP无限极分类,多种方法|很简单,这里说的很详细,其它地方说的很不好懂

PHP使用引用实现无限极分类