php 无限极分类
2018-10-29 15:29:14来源:博客园 阅读 ()
无限极分类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 }
数据表结构:
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- PHP写UltraEdit插件脚本实现方法 2020-03-29
- php 带逗号千位符数字的处理方法 2020-03-28
- PHP三元运算符的结合性介绍 2020-03-28
- PHP静态延迟绑定和普通静态效率的对比 2020-03-28
- 基于php流程控制语句和循环控制语句 2020-03-28
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash