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 相关文章推荐
Mysql的Root密码忘记,查看或修改的解决方法(图文介绍)
Jun 14 PHP
如何修改和添加Apache的默认站点目录
Jul 05 PHP
基于PHP中的常用函数回顾
Jul 11 PHP
如何使用PHP获取指定日期所在月的开始日期与结束日期
Aug 01 PHP
php中curl、fsocket、file_get_content三个函数的使用比较
May 09 PHP
php截取html字符串及自动补全html标签的方法
Jan 15 PHP
php打印一个边长为N的实心和空心菱型的方法
Mar 02 PHP
php mongodb操作类 带几个简单的例子
Aug 25 PHP
js基于qrcode.js生成二维码的方法【附demo插件源码下载】
Dec 28 PHP
php及codeigniter使用session-cookie的方法(详解)
Apr 06 PHP
Yii框架的布局文件实例分析
Sep 04 PHP
Laravel validate error处理,ajax,json示例
Oct 25 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中的Base62类(适用于数值转字符串)
2013/08/12 PHP
php中apc缓存使用示例
2013/12/25 PHP
js判断是否为数组的函数: isArray()
2011/10/30 Javascript
JavaScript中的作用域链和闭包
2012/06/30 Javascript
js中点击空白区域时文本框与隐藏层的显示与影藏问题
2013/08/26 Javascript
基于jquery插件实现常见的幻灯片效果
2013/11/01 Javascript
js键盘事件的keyCode
2014/07/29 Javascript
深入理解选择框脚本[推荐]
2016/12/13 Javascript
详解Angular CLI + Electron 开发环境搭建
2017/07/20 Javascript
Vue中render函数的使用方法
2018/01/31 Javascript
小程序显示弹窗时禁止下层的内容滚动实现方法
2019/03/20 Javascript
详解微信小程序自定义组件的实现及数据交互
2019/07/22 Javascript
nodejs nedb 封装库与使用方法示例
2020/02/06 NodeJs
v-slot和slot、slot-scope之间相互替换实例
2020/09/04 Javascript
[46:50]Liquid vs Mineski 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
[01:04:14]VP vs TNC 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
[01:57]2018年度DOTA2最具潜力解说-完美盛典
2018/12/16 DOTA
简单介绍Python中的len()函数的使用
2015/04/07 Python
python中pandas.DataFrame的简单操作方法(创建、索引、增添与删除)
2017/03/12 Python
Django中login_required装饰器的深入介绍
2017/11/24 Python
python中判断文件编码的chardet(实例讲解)
2017/12/21 Python
python实现聚类算法原理
2018/02/12 Python
python3获取当前文件的上一级目录实例
2018/04/26 Python
Python Datetime模块和Calendar模块用法实例分析
2019/04/15 Python
python使用if语句实现一个猜拳游戏详解
2019/08/27 Python
Django框架反向解析操作详解
2019/11/28 Python
浅谈Python3多线程之间的执行顺序问题
2020/05/02 Python
celery在python爬虫中定时操作实例讲解
2020/11/27 Python
canvas绘图按照contain或者cover方式适配并居中显示
2019/02/18 HTML / CSS
elf彩妆英国官网:e.l.f. Cosmetics英国(美国平价彩妆品牌)
2017/11/02 全球购物
利物浦足球俱乐部官方商店(美国):Liverpool FC US
2019/10/09 全球购物
您的时尚,您的生活方式:DTLR Villa
2019/12/25 全球购物
手术室护士自我鉴定
2013/10/14 职场文书
新兵入伍心得体会
2014/09/04 职场文书
销售辞职信范文
2015/03/02 职场文书
事业单位财务人员岗位职责
2015/04/14 职场文书