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的计数器程序
Oct 09 PHP
一个自定义位数的php多用户计数器代码
Mar 11 PHP
很好用的PHP数据库类
May 27 PHP
ThinkPHP实例化模型的四种方法概述
Aug 22 PHP
php 伪造ip以及url来路信息方法汇总
Nov 25 PHP
php定时执行任务设置详解
Feb 06 PHP
php中smarty实现多模版网站的方法
Jun 11 PHP
[原创]php token使用与验证示例【测试可用】
Aug 30 PHP
thinkphp5引入公共部分header、footer的方法详解
Sep 14 PHP
Codeigniter里的无刷新上传的实现代码
Apr 14 PHP
PHP 7.4 新语法之箭头函数实例详解
May 09 PHP
用Laravel轻松处理千万级数据的方法实现
Dec 25 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
CakePHP去除默认显示的标题及图标的方法
2008/10/22 PHP
C#静态方法与非静态方法实例分析
2014/09/22 PHP
PHP多进程简单实例小结
2019/11/09 PHP
PHP编程一定要改掉的5个不良习惯
2020/09/18 PHP
ajax中get和post的说明及使用与区别
2012/12/23 Javascript
JS获取计算机mac地址以及IP的实现方法
2014/01/08 Javascript
js表单处理中单选、多选、选择框值的获取及表单的序列化
2016/03/08 Javascript
js动态生成form 并用ajax方式提交的实现方法
2016/09/09 Javascript
Node.js使用orm2进行update操作时关联字段无法修改的解决方法
2017/06/13 Javascript
JavaScript中Require调用js的实例分享
2017/10/27 Javascript
js判断数组是否包含某个字符串变量的实例
2017/11/24 Javascript
微信小程序之多文件下载的简单封装示例
2018/01/29 Javascript
Vue-cropper 图片裁剪的基本原理及思路讲解
2018/04/17 Javascript
koa-router源码学习小结
2018/09/07 Javascript
js前端面试之同步与异步问题详解
2019/04/03 Javascript
搭建一个Koa后端项目脚手架的方法步骤
2019/05/30 Javascript
vue视频播放插件vue-video-player的具体使用方法
2019/11/08 Javascript
Vue Object.defineProperty及ProxyVue实现双向数据绑定
2020/09/02 Javascript
如何管理Vue中的缓存页面
2021/02/06 Vue.js
python判断图片宽度和高度后删除图片的方法
2015/05/22 Python
Python tkinter label 更新方法
2018/10/11 Python
Python面向对象实现一个对象调用另一个对象操作示例
2019/04/08 Python
pybind11和numpy进行交互的方法
2019/07/04 Python
Django框架创建mysql连接与使用示例
2019/07/29 Python
HTML5之WebGL 3D概述(下)—借助类库开发及框架介绍
2013/01/31 HTML / CSS
SQL里面如何插入自动增长序列号字段
2012/03/29 面试题
大学生求职中的自我评价
2013/10/01 职场文书
校园十佳歌手策划书
2014/01/22 职场文书
项目建议书格式
2014/03/12 职场文书
社会工作专业求职信
2014/07/15 职场文书
出差报告范文
2014/11/06 职场文书
市级三好生竞选稿
2015/11/21 职场文书
司法廉洁教育心得体会
2016/01/20 职场文书
CSS3鼠标悬浮过渡缩放效果
2021/04/17 HTML / CSS
Python竟然能剪辑视频
2021/05/25 Python
电脑开机弹出documents文件夹怎么回事?弹出documents文件夹解决方法
2022/04/08 数码科技