PHP如何通过传引用的思想实现无限分类(代码简单)


Posted in PHP onOctober 13, 2015

无限级分类,主要是通过储存上级分类的id以及分类路径来实现

在我的Simpla中,用到了无限分类,使用了PHP的传引用思想实现无限分类的方法,可以完美展示类似这样的分类模式。

id   pid   name
1    0     四川
2    0     重庆
3    1     成都
4    1     绵阳
5    3     高新区

代码如下所示:

/**
  * 数组变成无限级分类--传引用思想
  * @param array $items
  * @return array
  */
 public static function get_tree($orig) {
  //解决下标不是1开始的问题
  $items = array();
  foreach ($orig as $key => $value) {
   $items[$value[‘id‘]] = $value;
  }
  //开始组装
  $tree = array();
  foreach ($items as $key => $item) {
   if ($item[‘pid‘] == 0) { //为0,则为1级分类
    $tree[] = &$items[$key];
   } else {
    if (isset($items[$item[‘pid‘]])) { //存在值则为二级分类
     $items[$item[‘pid‘]][‘child‘][] = &$items[$key]; //传引用直接赋值与改变
    } else { //至少三级分类
     //由于是传引用思想,这里将不会有值
     $tree[] = &$items[$key];
    }
   }
  }
  return $tree;
 }

以上内容很简单吧,如有错误或者更好的方法,希望可以相互交流。谢谢。!

PHP 相关文章推荐
信用卡效验程序
Oct 09 PHP
使用PHP提取视频网站页面中的FLASH地址的代码
Apr 17 PHP
基于PHP magic_quotes_gpc的使用方法详解
Jun 24 PHP
php文字水印和php图片水印实现代码(二种加水印方法)
Dec 25 PHP
PHP实现使用优酷土豆视频地址获取swf播放器分享地址
Jun 05 PHP
Laravel 5框架学习之表单验证
Apr 08 PHP
ThinkPHP安装和设置
Jul 27 PHP
php实现处理输入转义字符的代码
Nov 08 PHP
Laravel框架分页实现方法分析
Jun 12 PHP
PHP常用工具函数小结【移除XSS攻击、UTF8与GBK编码转换等】
Apr 27 PHP
Laravel框架控制器,视图及模型操作图文详解
Dec 04 PHP
PhpStorm2020.1 安装 debug - Postman 调用的详细教程
Aug 17 PHP
JavaScript与HTML结合的基本使用方法整理
Oct 12 #PHP
apache和PHP如何整合在一起
Oct 12 #PHP
php实现Mysql简易操作类
Oct 11 #PHP
php实现微信公众平台账号自定义菜单类
Oct 11 #PHP
php实现微信公众号无限群发
Oct 11 #PHP
PHP+Mysql+jQuery中国地图区域数据统计实例讲解
Oct 10 #PHP
PHP+Mysql+jQuery文件下载次数统计实例讲解
Oct 10 #PHP
You might like
PHP连接sql server 2005环境配置及问题解决
2014/08/08 PHP
ThinkPHP独立分组使用的注意事项
2014/11/25 PHP
PHP中Session和Cookie是如何操作的
2015/10/10 PHP
struts2 jquery 打造无限层次的树
2009/10/23 Javascript
跨浏览器开发经验总结(三)   警惕“IE依赖综合症”
2010/05/13 Javascript
到处都是jQuery选择器的年代 不了解它们的性能,行吗
2012/06/18 Javascript
基于JavaScript实现继承机制之调用call()与apply()的方法详解
2013/05/07 Javascript
JS实现让访问者自助选择网页文字颜色的方法
2015/02/24 Javascript
理解javascript封装
2016/02/23 Javascript
使用bootstrap3开发响应式网站
2016/05/12 Javascript
jquery插件bootstrapValidator数据验证详解
2016/11/09 Javascript
bootstrap suggest搜索建议插件使用详解
2017/03/25 Javascript
JS闭包用法实例分析
2017/03/27 Javascript
浅谈vuex actions和mutation的异曲同工
2018/12/13 Javascript
JavaScript常用工具方法封装
2019/02/12 Javascript
新手简单了解vue
2019/05/29 Javascript
JavaScript实现图片轮播特效
2019/10/23 Javascript
[01:44]剑指西雅图 展望TI之CIS战队专访
2014/06/25 DOTA
python实现爬取千万淘宝商品的方法
2015/06/30 Python
pycham查看程序执行的时间方法
2018/11/29 Python
使用Windows批处理和WMI设置Python的环境变量方法
2019/08/14 Python
python深copy和浅copy区别对比解析
2019/12/26 Python
matplotlib源码解析标题实现(窗口标题,标题,子图标题不同之间的差异)
2021/02/22 Python
详解HTML5将footer置于页面最底部的方法(CSS+JS)
2018/10/11 HTML / CSS
英国最大的在线奢侈手表零售商:Jura Watches
2018/01/29 全球购物
来自Ocado的宠物商店:Fetch
2018/07/10 全球购物
爱尔兰最大的体育零售商:Life Style Sports
2019/06/12 全球购物
英国领先的男装设计师服装独立零售商:Repertoire Fashion
2020/10/19 全球购物
局域网标准
2016/09/10 面试题
六个一活动实施方案
2014/03/21 职场文书
《画风》教学反思
2014/04/16 职场文书
2014年党课学习材料
2014/05/11 职场文书
领导干部作风建设剖析材料
2014/10/11 职场文书
2016大学优秀学生干部事迹材料
2016/03/01 职场文书
mysql死锁和分库分表问题详解
2021/04/16 MySQL
使用vuex-persistedstate本地存储vuex
2022/04/29 Vue.js