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中文输出变成问号的问题
Jun 05 PHP
php cc攻击代码与防范方法
Oct 18 PHP
php class类的用法详细总结
Oct 17 PHP
PHP捕获Fatal error错误的方法
Jun 11 PHP
PHP往XML中添加节点的方法
Mar 12 PHP
php中file_exists函数使用详解
May 08 PHP
适用于初学者的简易PHP文件上传类
Oct 29 PHP
PHP实现找出有序数组中绝对值最小的数算法分析
Aug 07 PHP
laravel中数据显示方法(默认值和下拉option默认选中)
Oct 11 PHP
PHP调用接口API封装的例子
Oct 11 PHP
Laravel手动返回错误码示例
Oct 22 PHP
CI框架简单分页类用法示例
Jun 06 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
简单易用的计数器(数据库)
2006/10/09 PHP
php下连接mssql2005的代码
2011/01/17 PHP
PHP通用检测函数集合
2011/02/08 PHP
php中base_convert()进制数字转换函数实例
2014/11/20 PHP
php批量修改表结构实例
2017/05/24 PHP
thinkphp5 URL和路由的功能详解与实例
2017/12/26 PHP
Aster vs Newbee BO5 第一场2.19
2021/03/10 DOTA
又一个小巧的图片预加载类
2007/05/05 Javascript
javascript dom 基本操作小结
2010/04/11 Javascript
基于jQuery的让非HTML5浏览器支持placeholder属性的代码
2011/05/24 Javascript
JS图片预加载 JS实现图片预加载应用
2012/12/03 Javascript
js操作CheckBoxList实现全选/反选(在客服端完成)
2013/02/02 Javascript
js特殊字符转义介绍
2013/11/05 Javascript
利用js制作html table分页示例(js实现分页)
2014/04/25 Javascript
JavaScript ES6的新特性使用新方法定义Class
2016/06/28 Javascript
基于angularJS的表单验证指令介绍
2016/10/21 Javascript
jQuery实现的无缝广告图片左右滚动功能详解
2016/12/24 Javascript
nodejs入门教程一:概念与用法简介
2017/04/24 NodeJs
详解让sublime text3支持Vue语法高亮显示的示例
2017/09/29 Javascript
Python实现可自定义大小的截屏功能
2018/01/20 Python
python3操作微信itchat实现发送图片
2018/02/24 Python
Python中多个数组行合并及列合并的方法总结
2018/04/12 Python
python实现简单淘宝秒杀功能
2018/05/03 Python
python实现简单tftp(基于udp协议)
2018/07/30 Python
对python3新增的byte类型详解
2018/12/04 Python
Python 单例设计模式用法实例分析
2019/09/23 Python
使用 django orm 写 exists 条件过滤实例
2020/05/20 Python
精致的手工皮鞋:Shoe Embassy
2019/11/08 全球购物
学年末自我鉴定
2014/01/21 职场文书
六查六看自查材料
2014/02/17 职场文书
《三亚落日》教学反思
2014/04/26 职场文书
小学爱国卫生月活动总结
2014/06/30 职场文书
党支部创先争优活动总结
2014/08/28 职场文书
领导班子四风问题对照检查材料
2014/09/27 职场文书
讲座新闻稿
2015/07/18 职场文书
CSS 伪元素::marker详解
2021/06/26 HTML / CSS