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 变量的定义方法
Jan 26 PHP
php读取xml实例代码
Jan 28 PHP
php中使用ExcelFileParser处理excel获得数据(可作批量导入到数据库使用)
Aug 21 PHP
thinkPHP实现瀑布流的方法
Nov 29 PHP
php+mysqli实现将数据库中一张表信息打印到表格里的方法
Jan 28 PHP
分享PHP源码批量抓取远程网页图片并保存到本地的实现方法
Dec 01 PHP
PHP 自动加载的简单实现(推荐)
Aug 12 PHP
PHP实现超简单的SSL加密解密、验证及签名的方法示例
Aug 28 PHP
PHP memcache在微信公众平台的应用方法示例
Sep 13 PHP
详解PHP实现支付宝小程序用户授权的工具类
Dec 25 PHP
php5.6.x到php7.0.x特性小结
Aug 17 PHP
PHP设计模式(七)组合模式Composite实例详解【结构型】
May 02 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
swfupload 多文件上传实现代码
2008/08/27 PHP
php 发送带附件邮件示例
2014/01/23 PHP
php中运用http调用的GET和POST方法示例
2014/09/29 PHP
php无限分类使用concat如何实现
2015/11/05 PHP
PHP+MySQL存储数据常见中文乱码问题小结
2016/06/13 PHP
thinkphp项目如何自定义微信分享描述内容
2017/02/20 PHP
Js中sort()方法的用法
2006/11/04 Javascript
Javascript SHA-1:Secure Hash Algorithm
2006/12/20 Javascript
一个符号插入器 中用到的js代码
2007/09/04 Javascript
使用jQuery同时控制四张图片的伸缩实现代码
2013/04/19 Javascript
jQuery统计上传文件大小的方法
2015/01/24 Javascript
JavaScript使用addEventListener添加事件监听用法实例
2015/06/01 Javascript
javascript中substring()、substr()、slice()的区别
2015/08/30 Javascript
JavaScript学习小结之被嫌弃的eval函数和with语句实例详解
2016/08/01 Javascript
html+js+highcharts绘制圆饼图表的简单实例
2016/08/04 Javascript
js addDqmForPP给标签内属性值加上双引号的函数
2016/12/24 Javascript
vue项目国际化vue-i18n的安装使用教程
2018/03/14 Javascript
JS实现继承的几种常用方式示例
2019/06/22 Javascript
详解vue组件之间的通信
2020/08/30 Javascript
[06:09]辉夜杯主赛事开幕式
2015/12/25 DOTA
Python实现求笛卡尔乘积的方法
2017/09/16 Python
Ubuntu16.04/树莓派Python3+opencv配置教程(分享)
2018/04/02 Python
python删除不需要的python文件方法
2018/04/24 Python
python实现批量解析邮件并下载附件
2018/06/19 Python
numpy matrix和array的乘和加实例
2018/06/28 Python
实例讲解python中的协程
2018/10/08 Python
python实现多层感知器MLP(基于双月数据集)
2019/01/18 Python
python进程池实现的多进程文件夹copy器完整示例
2019/11/27 Python
tensorflow安装成功import tensorflow 出现问题
2020/04/16 Python
IE兼容css3圆角的实现代码
2011/07/21 HTML / CSS
HTML5新特性之type=file文件上传功能
2018/02/02 HTML / CSS
党员实事承诺书
2014/03/26 职场文书
秋天的雨教学反思
2014/04/27 职场文书
2014年办公室个人工作总结
2014/11/12 职场文书
市直属机关2016年主题党日活动总结
2016/04/05 职场文书
雄兵连:第三季先行图公开,天使恶魔联合,银河之力的新力量
2021/06/11 国漫