递归实现无限级分类
2015-10-30 09:09
411 查看
<?php Class Category{ //排序数组 static public function unlimitedForLevel($cate,$html=" --",$pid=0,$level=0){ $arr = array(); foreach($cate as $v){ if($v['pid'] == $pid){ $v['level'] = $level+1; $v['html'] = str_repeat($html,$level); $arr[] = $v; $arr = array_merge($arr,self::unlimitedForLevel($cate,$html,$v['id'],$level+1)); } } return $arr; } //组合数组 用于做导航栏 static public function unlimitedForLayer($cate,$name='child',$pid=0){ $arr = array(); foreach($cate as $v){ if($v['pid']==$pid){ $v['child'] = self::unlimitedForLayer($cate,$name,$v['id']); $arr[] = $v; } } return $arr; } //传递一个子分类ID获得父级目录 用户制作当前位置导航条 Static Public function getParents($cate,$id){ $arr = array(); foreach($cate as $v){ if($v['id']==$id){ $arr[] = $v; $arr = array_merge(self::getParents($cate,$v['pid']),$arr); } } return $arr; } //传递一个父级分类ID返回所有子分类ID Static Public function getChildsId($cate,$pid){ $arr = array(); foreach($cate as $v){ if($v['pid']==$pid){ $arr[] = $v['id']; $arr = array_merge($arr,self::getChildsId($cate,$v['id'])); } } return $arr; } //传递一个父类ID获得其所有子集分类 Static Public function getChilds($cate ,$pid){ $arr = array(); foreach($cate as $v){ if($v['pid']==$pid){ $arr[] = $v; $arr = array_merge($arr,self::getChilds($cate,$v['id'])); } } return $arr; } } ?>
相关文章推荐
- 超级系统工具Sysdig,比 strace、tcpdump、lsof 加起来还强大
- 窗口传值方法(socket多窗口共用)
- 采用Atlas+Keepalived实现MySQL读写分离、读负载均衡
- C++之tinyXML使用
- 写程序取自己进程的AEP
- Windows 10 专业版关闭自动更新
- 第6周项目2 建立栈链算法库
- 第六周项目二建立链栈算法库
- SQ 数据库归档
- 3D Touch 第二弹
- tinyxml的使用和字符编码转换
- bzoj4306: 玩具厂
- 第八周项目4—字符串加密
- 第9周项目1 猴子选大王(数组)
- DZN 占位图
- TCP/IP协议
- C++基础
- 往一个方向深入
- 第七周 项目2-建立链队算法库
- 设置界面的显示时间