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中操作MySQL数据库的一些要注意的问题
Oct 09 PHP
利用js调用后台php进行数据处理原码
Oct 09 PHP
用PHP实现递归循环每一个目录
Aug 08 PHP
PHP中其实也可以用方法链
Nov 10 PHP
shell脚本作为保证PHP脚本不挂掉的守护进程实例分享
Jul 15 PHP
本地计算机无法启动Apache故障处理
Aug 08 PHP
利用PHP脚本在Linux下用md5函数加密字符串的方法
Jun 29 PHP
php远程下载类分享
Apr 13 PHP
PHP压缩图片功能的介绍
Mar 21 PHP
PHP如何实现阿里云短信sdk灵活应用在项目中的方法
Jun 14 PHP
php更新cookie内容的详细方法
Sep 30 PHP
gearman中任务的优先级和返回状态实例分析
Feb 27 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操作数组相关函数
2011/02/03 PHP
laravel利用中间件防止未登录用户直接访问后台的方法
2019/09/30 PHP
javascript面向对象入门基础详细介绍
2012/09/05 Javascript
简单选项卡 js和jquery制作方法分享
2014/02/26 Javascript
JS实现简单的顶部定时关闭层效果
2014/06/15 Javascript
js面向对象之公有、私有、静态属性和方法详解
2015/04/17 Javascript
详解JavaScript基于面向对象之创建对象(2)
2015/12/10 Javascript
不间断循环滚动效果的实例代码(必看篇)
2016/10/08 Javascript
原生js实现图片放大缩小计时器效果
2017/01/20 Javascript
jQuery简单实现MD5加密的方法
2017/03/03 Javascript
vue 请求后台数据的实例代码
2017/06/22 Javascript
分析javascript中9 个常见错误阻碍你进步
2017/09/18 Javascript
BACKBONE.JS 简单入门范例
2017/10/17 Javascript
使用JS中的Replace()方法遇到的问题小结
2017/10/20 Javascript
微信小程序实现点击按钮修改view标签背景颜色功能示例【附demo源码下载】
2017/12/06 Javascript
JS加密插件CryptoJS实现的Base64加密示例
2020/08/16 Javascript
使用element-ui的el-menu导航选中后刷新页面保持当前选中状态
2019/07/19 Javascript
three.js着色器材质的内置变量示例详解
2020/08/16 Javascript
vue组件讲解(is属性的用法)模板标签替换操作
2020/09/04 Javascript
Python自动化运维和部署项目工具Fabric使用实例
2016/09/18 Python
Python基于numpy灵活定义神经网络结构的方法
2017/08/19 Python
Django 多环境配置详解
2019/05/14 Python
python实现美团订单推送到测试环境,提供便利操作示例
2019/08/09 Python
利用Tensorflow的队列多线程读取数据方式
2020/02/05 Python
教师绩效工资方案
2014/02/01 职场文书
乌鸦喝水教学反思
2014/02/07 职场文书
廉洁教育学习材料
2014/05/19 职场文书
党的群众路线教育实践活动心得体会(教师)
2014/10/31 职场文书
担保书范本
2015/01/20 职场文书
2015年民兵整组工作总结
2015/07/24 职场文书
新手,如何业余时间安排好写作、提高写作能力?
2019/10/21 职场文书
Pytorch 中net.train 和 net.eval的使用说明
2021/05/22 Python
MySQL 数据恢复的多种方法汇总
2021/06/21 MySQL
Java中使用Filter过滤器的方法
2021/06/28 Java/Android
Mybatis-plus在项目中的简单应用
2021/07/01 Java/Android