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 无限极分类的主要内容,如果未能解决你的问题,请参考以下文章