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 相关文章推荐
用libtemplate实现静态网页生成
Oct 09 PHP
用session做客户验证时的注意事项
Oct 09 PHP
PHP读MYSQL中文乱码的解决方法
Dec 17 PHP
PHP中开发XML应用程序之基础篇 添加节点 删除节点 查询节点 查询节
Jul 09 PHP
php简单的会话类代码
Aug 08 PHP
PHP中SESSION使用中的一点经验总结
Mar 30 PHP
php根据某字段对多维数组进行排序的方法
Mar 07 PHP
php版交通银行网银支付接口开发入门教程
Sep 26 PHP
详解PHP如何更好的利用PHPstorm的自动提示
Aug 18 PHP
Laravel框架路由管理简单示例
May 07 PHP
Laravel向公共模板赋值方法总结
Jun 25 PHP
PHP使用JpGraph绘制折线图操作示例【附源码下载】
Oct 18 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
Thinkphp无限级分类代码
2015/11/11 PHP
php投票系统之增加与删除投票(管理员篇)
2016/07/01 PHP
PHP实现的登录,注册及密码修改功能分析
2016/11/25 PHP
php反射学习之依赖注入示例
2019/06/14 PHP
Laravel+Intervention实现上传图片功能示例
2019/07/09 PHP
php生成微信红包数组的方法
2019/09/05 PHP
php输出反斜杠的实例方法
2019/09/19 PHP
Laravel等框架模型关联的可用性浅析
2019/12/15 PHP
传递参数的标准方法(jQuery.ajax)
2008/11/19 Javascript
js 分栏效果实现代码
2009/08/29 Javascript
jQuery实现的立体文字渐变效果
2010/05/17 Javascript
JS面向对象编程浅析
2011/08/28 Javascript
Javascript this 的一些学习总结
2012/08/02 Javascript
JS判断数组中是否有重复值得三种实用方法
2013/08/16 Javascript
浅谈JavaScript中数组的增删改查
2016/06/20 Javascript
Three.js学习之几何形状
2016/08/01 Javascript
微信小程序 Template详解及简单实例
2017/01/05 Javascript
Vue 过渡(动画)transition组件案例详解
2017/01/22 Javascript
基于vue的换肤功能的示例代码
2017/10/10 Javascript
angularJS实现不同视图同步刷新详解
2018/10/09 Javascript
Vue中的基础过渡动画及实现原理解析
2018/12/04 Javascript
微信小程序开发打开另一个小程序的实现方法
2020/05/17 Javascript
如何利用nodejs实现命令行游戏
2020/11/24 NodeJs
[15:07]lgd_OG_m2_BP
2019/09/10 DOTA
Python获取脚本所在目录的正确方法
2014/04/15 Python
Python使用cx_Oracle模块将oracle中数据导出到csv文件的方法
2015/05/16 Python
Python编程之变量赋值操作实例分析
2017/07/24 Python
python实现员工管理系统
2018/01/11 Python
Python机器学习工具scikit-learn的使用笔记
2021/01/28 Python
html5使用Canvas绘图的使用方法
2017/11/21 HTML / CSS
HTML5在IE10、火狐下中文乱码问题的解决方法
2013/11/18 HTML / CSS
销售经理竞聘书
2014/03/31 职场文书
计算机专业毕业生自荐书
2014/06/02 职场文书
四查四看整改措施
2014/09/19 职场文书
Python机器学习之底层实现KNN
2021/06/20 Python
MySQL数据库必备之条件查询语句
2021/10/15 MySQL