文档章节

PHP通过传引用的思想实现无限分类的方法

卖小女孩的小火柴
 卖小女孩的小火柴
发布于 2015/10/13 09:09
字数 246
阅读 140
收藏 1

在我的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;
    }


© 著作权归作者所有

卖小女孩的小火柴

卖小女孩的小火柴

粉丝 46
博文 68
码字总数 28535
作品 1
成都
项目经理
私信 提问
加载中

评论(0)

php递归算法

递归函数是我们常用到的一类函数,最基本的特点是函数自身调用自身,但必须在调用自身前有条件判断,否则无限无限调用下去。实现递归函数可以采取什么方式呢?本文列出了三种基本方式。理解其...

微雨初晴
2016/11/26
38
0
PHP 核心知识要点

Php:脚本语言,网站建设,服务器端运行 PHP定义:一种服务器端的 HTML 脚本/编程语言,是一种简单的、面向对象的、解释型的、健壮的、安全的、性能非常之高的、独立于架构的、可移植的、动态...

-波仔-
2016/09/24
83
0
浅谈Android的回调

C不会自己调用b,C提供b的目的就是让S来调用它,而且C不得不提供。S并不知道C提供的b是什么,因此S会约定b的接口规范(函数原型),然后由C提前通过S的一个函数r告诉S自己将要使用b函数(即注册...

博为峰教研组
2016/10/27
27
0
thinkphp3.1无限级分类模块的设计

实现无限级分类一般只用一个数据表,通常可通过递归和非递归两种方法来实现。递归方法必须使用递归 调用方式才能进行数据遍历,删除等操作,所以需要发送多次查询数据库语句,非常影响执行效...

网菠萝果
2013/03/23
543
1
Ztree + PHP 无限级节点 递归查找节点法

一、前言 简单的描述一下,实习几个原理,思想,其实写很多东西,思想算是最重要的。 1、目标:将写一个无限节点的树形目录结构,如下图 步骤: 1、你的下载 插件 ztree。然后布置在你的项目...

RablePHP
2014/11/14
4.2K
7

没有更多内容

加载失败,请刷新页面

加载更多

北京哪里可以开电线电缆发票-北京新闻网

北京哪里可以开电线电缆发票【1.3.2 - 2.9.3.0 - 0.5.6.8.】李生,adb的全称为Android Debug Bridge,是Android手机通用的一个USB端口。百度CarLife的部分车机采用...

多徐重
12分钟前
25
0
北京哪里可以开场租费发票-北京新闻网

北京哪里可以开场租费发票【1.3.2 - 2.9.3.0 - 0.5.6.8.】李生,adb的全称为Android Debug Bridge,是Android手机通用的一个USB端口。百度CarLife的部分车机采用了...

上感受到
13分钟前
48
0
北京哪里可以开租赁费发票-北京新闻网

北京哪里可以开租赁费发票【1.3.2 - 2.9.3.0 - 0.5.6.8.】李生,adb的全称为Android Debug Bridge,是Android手机通用的一个USB端口。百度CarLife的部分车机采用了...

东方场上
13分钟前
33
0
北京哪里可以开工程款发票-北京新闻网

北京哪里可以开工程款发票【1.3.2 - 2.9.3.0 - 0.5.6.8.】李生,adb的全称为Android Debug Bridge,是Android手机通用的一个USB端口。百度CarLife的部分车机采用了...

识过人石
14分钟前
27
0
北京哪里可以开五金材料发票-北京新闻网

北京哪里可以开五金材料发票【1.3.2 - 2.9.3.0 - 0.5.6.8.】李生,adb的全称为Android Debug Bridge,是Android手机通用的一个USB端口。百度CarLife的部分车机采用...

提供格
15分钟前
24
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部