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 相关文章推荐
php目录管理函数小结
Sep 10 PHP
PHP开发中常用的字符串操作函数
Feb 08 PHP
php中关于codeigniter的xmlrpc的类在进行数据交换时的类型问题
Jul 03 PHP
php Imagick获取图片RGB颜色值
Jul 28 PHP
laravel安装和配置教程
Oct 29 PHP
ThinkPHP中公共函数路径和配置项路径的映射分析
Nov 22 PHP
php生成年月日下载列表的方法
Apr 24 PHP
php基于dom实现读取图书xml格式数据的方法
Feb 03 PHP
thinkPHP5.0框架模块设计详解
Mar 18 PHP
thinkPHP框架实现的简单计算器示例
Dec 07 PHP
Laravel 中使用简单的方法跟踪用户是否在线(推荐)
Oct 30 PHP
PHP pthreads v3下的Volatile简介与使用方法示例
Feb 21 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
基于mysql的论坛(5)
2006/10/09 PHP
PHP实现根据时间戳获取周几的方法
2016/02/26 PHP
Zend Framework教程之模型Model用法简单实例
2016/03/04 PHP
利用javascript/jquery对上传文件格式过滤的方法
2009/07/25 Javascript
js 屏蔽鼠标右键脚本附破解方法
2009/12/03 Javascript
JQuery入门——用one()方法绑定事件处理函数(仅触发一次)
2013/02/05 Javascript
文件编码导致jquery失效的解决方法
2013/06/26 Javascript
js鼠标及对象坐标控制属性详细解析
2013/12/14 Javascript
浏览器兼容性问题大汇总
2015/12/17 Javascript
详解用vue-cli来搭建vue项目和webpack
2017/04/20 Javascript
详解JavaScript按概率随机生成事件
2017/08/02 Javascript
Vue.js框架路由使用方法实例详解
2017/08/25 Javascript
基于js原生和ajax的get和post方法以及jsonp的原生写法实例
2017/10/16 Javascript
vue2.x+webpack快速搭建前端项目框架详解
2017/11/30 Javascript
vue使用axios时关于this的指向问题详解
2017/12/22 Javascript
javascript获取图片的top N主色值方法详解
2018/01/26 Javascript
Angular浏览器插件Batarang介绍及使用
2018/02/07 Javascript
浅谈用Webpack路径压缩图片上传尺寸获取的问题
2018/02/22 Javascript
js删除数组中某几项的方法总结
2019/01/16 Javascript
基于node简单实现RSA加解密的方法步骤
2019/03/21 Javascript
浏览器事件循环与vue nextTicket的实现
2019/04/16 Javascript
使用VUE实现在table中文字信息超过5个隐藏鼠标移到时弹窗显示全部
2019/09/16 Javascript
在Django框架中运行Python应用全攻略
2015/07/17 Python
用python实现简单EXCEL数据统计的实例
2017/01/24 Python
Python排序搜索基本算法之冒泡排序实例分析
2017/12/09 Python
Python通过paramiko远程下载Linux服务器上的文件实例
2018/12/27 Python
ZABBIX3.2使用python脚本实现监控报表的方法
2019/07/02 Python
浅析PEP570新语法: 只接受位置参数
2019/10/15 Python
基于python3 的百度图片下载器的实现代码
2019/11/05 Python
Python 装饰器原理、定义与用法详解
2019/12/07 Python
用pandas划分数据集实现训练集和测试集
2020/07/20 Python
详解Python中的文件操作
2021/01/14 Python
CSS3 伪类选择器 nth-child()说明
2010/07/10 HTML / CSS
2014年办公室文员工作总结
2014/11/12 职场文书
2014年体育工作总结
2014/11/24 职场文书
html用代码制作虚线框怎么做? dw制作虚线圆圈的技巧
2022/12/24 HTML / CSS