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 相关文章推荐
PHP4实际应用经验篇(6)
Oct 09 PHP
从Web查询数据库之PHP与MySQL篇
Sep 25 PHP
php获取post中的json数据的实现方法
Jun 08 PHP
PHP中对于浮点型的数据需要用不同的方法解决
Mar 11 PHP
PHP操作MySQL事务实例
Nov 05 PHP
php+ajax实现文章自动保存的方法
Dec 30 PHP
php+mysqli批量查询多张表数据的方法
Jan 29 PHP
PHP检测用户是否关闭浏览器的方法
Feb 14 PHP
ThinkPHP5 的简单搭建和使用详解
Nov 15 PHP
php字符串函数 str类常见用法示例
May 15 PHP
Swoole扩展的6种模式深入详解
Mar 04 PHP
php实例化对象的实例方法
Nov 17 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类
2006/07/15 PHP
探讨PHP调用时间格式的参数详解
2013/06/06 PHP
图文介绍PHP添加Redis模块及连接
2015/07/28 PHP
PHP实现使用DOM将XML数据存入数组的方法示例
2017/09/27 PHP
js调试工具 Javascript Debug Toolkit 2.0.0版本发布
2008/12/02 Javascript
javascript 面向对象编程基础:继承
2009/08/21 Javascript
一些技巧性实用js代码小结
2009/10/14 Javascript
点击弹出层外区域关闭弹出层jquery特效示例
2013/08/25 Javascript
jQuery实现TAB风格的全国省份城市滑动切换效果代码
2015/08/24 Javascript
jquery.cookie.js用法实例详解
2015/12/25 Javascript
jQuery form插件之formDdata参数校验表单及验证后提交
2016/01/23 Javascript
Ajax与服务器(JSON)通信实例代码
2016/11/05 Javascript
vue2.0+webpack环境的构造过程
2016/11/08 Javascript
ajax实现加载页面、删除、查看详细信息 bootstrap美化页面!
2017/03/14 Javascript
基于jstree使用AJAX请求获取数据形成树
2017/08/29 Javascript
js 发布订阅模式的实例讲解
2017/09/10 Javascript
JavaScript html5 canvas实现图片上画超链接
2017/10/20 Javascript
vux uploader 图片上传组件的安装使用方法
2018/05/15 Javascript
JS中比较两个Object数组是否相等方法实例
2019/11/11 Javascript
JS插入排序简单理解与实现方法分析
2019/11/25 Javascript
[57:22]2018DOTA2亚洲邀请赛 4.7总决赛 LGD vs Mineski 第五场
2018/04/10 DOTA
Python 字符串操作(string替换、删除、截取、复制、连接、比较、查找、包含、大小写转换、分割等)
2018/03/19 Python
dataframe设置两个条件取值的实例
2018/04/12 Python
python实现狄克斯特拉算法
2019/01/17 Python
python 通过视频url获取视频的宽高方式
2019/12/10 Python
Python通过两个dataframe用for循环求笛卡尔积
2020/04/29 Python
凯特方迪化妆品官网:Kat Von D Beauty
2016/11/15 全球购物
如何编写优秀的食品项目创业计划书
2014/01/23 职场文书
奥巴马上海演讲稿
2014/09/10 职场文书
工作粗心大意检讨书
2014/09/18 职场文书
党员个人自我剖析材料
2014/10/08 职场文书
求职自荐信怎么写
2015/03/04 职场文书
务工证明怎么写
2015/06/18 职场文书
探究Mysql模糊查询是否区分大小写
2021/06/11 MySQL
MySQL中JOIN连接的基本用法实例
2022/06/05 MySQL
pandas中pd.groupby()的用法详解
2022/06/16 Python