文档章节

php递归

newrex
 newrex
发布于 2016/03/29 11:30
字数 274
阅读 12
收藏 0
<?php    
    /**
     * 递归无限级分类 获取任意节点下所有子类
     
     $arrCate 待排序的数组
     * @param int
     $parent_id 父级节点
     * @param int
     $level 层级数
     * @return array
     $arrTree 排序后的数组
     */
    function getMenuTree($arrCat,
     $parent_id = 0, $level = 0)
    {
        static  $arrTree= array(); //使用static代替global
        if( empty($arrCat)) returnFALSE;
        $level++;
        foreach($arrCat as $key=> $value)
        {
            if($value['parent_id' ]== $parent_id)
            {
                $value[ 'level']= $level;
                $arrTree[] = $value;
                unset($arrCat[$key]); //注销当前节点数据,减少已无用的遍历
                getMenuTree($arrCat, $value[ 'id'],$level);
            }
        }
       
        return $arrTree;
    }


    /**
     * 测试数据
     */
    $arrCate = array(  //待排序数组
      array( 'id'=>1, 'name' =>'顶级栏目一', 'parent_id'=>0),
      array( 'id'=>2, 'name' =>'顶级栏目二', 'parent_id'=>0),
      array( 'id'=>3, 'name' =>'顶级栏目三', 'parent_id'=>0),
      array( 'id'=>4, 'name' =>'顶级栏目四', 'parent_id'=>0),
      array( 'id'=>5, 'name' =>'顶级栏目五', 'parent_id'=>0),
      array( 'id'=>6, 'name' =>'顶级栏目六', 'parent_id'=>0),
      array( 'id'=>7, 'name' =>'栏目三', 'parent_id'=>1),
      array( 'id'=>8, 'name' =>'栏目四', 'parent_id'=>3),
      array( 'id'=>9, 'name' =>'栏目五', 'parent_id'=>4),
      array( 'id'=>10, 'name' =>'栏目六', 'parent_id'=>2),
      array( 'id'=>11, 'name' =>'栏目七', 'parent_id'=>6),
      array( 'id'=>12, 'name' =>'栏目八', 'parent_id'=>6),
      array( 'id'=>13, 'name' =>'栏目九', 'parent_id'=>7),
    );
    
    header('Content-type:text/html;
     charset=utf-8'); //设置utf-8编码
    echo '<pre>';
    print_r(getMenuTree($arrCate, 0, 0));
    echo '</pre>';
    ?>


© 著作权归作者所有

共有 人打赏支持
上一篇: CI好用的ajax验证
下一篇: ci生成缩略图
newrex
粉丝 1
博文 5
码字总数 1631
作品 0
郑州
后端工程师
私信 提问
PHP常用函数篇

PHP常用函数篇 1.为什么要使用函数? 除了内建的PHP函数,我们可以创建我们自己的函数。 函数是可以在程序中重复使用的语句块。 使代码逻辑更清晰 避免过多的全局变量 封装后避免相同逻辑重复...

Besmall
2017/11/01
0
0
EZ娱乐源码出售时间复杂度和空间复杂度

时间复杂度 常见的时间复杂度有EZ娱乐源码出售请添加链接描述(www.1159880099.com) QQ1159880099:常数阶O(1),对数阶O(log2n),线性阶O(n),线性对数阶O(nlog2n),平方阶O(n2),立方阶O(n...

nQ1159880099
2018/06/26
0
0
Shell 高级编程

Shell 高级编程 原创 2016-11-04 景峯 Netkiller Shell 高级编程 http://netkiller.github.io/journal/shell.html Mr. Neo Chen (陈景峯), netkiller, BG7NYT 中国广东省深圳市龙华新区民治街......

neo-chen
2016/11/04
347
0
PHP_递归函数时return的Bug

最近在用PHP写一些设计模式的小例子,有大量的设计模式都会递归调用对象或者函数。有的时候需要返回处理状态,就会用到return。在JAVA中 只要在函数内部return就可以得到最后的结果。而在PHP...

四云麒麟
2012/07/08
0
2
php递归算法

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

微雨初晴
2016/11/26
9
0

没有更多内容

加载失败,请刷新页面

加载更多

精品书籍推荐

JavaScript书籍推荐 1、[JavaScript高级程序设计(第3版)] 2、你不知道的JavaScript(中卷) 3、ES6标准入门(第二版)阮一峰

轻轻的往前走
11分钟前
2
0
JVM(六)为什么新生代有两个Survivor分区?

本文会使用排除法的手段,来讲解新生代的区域划分,从而让读者能够更清晰的理解分代回收器的原理,在开始之前我们先来整体认识一下分代收集器。 分代收集器会把内存空间分为:老生代和新生代...

王磊的博客
16分钟前
5
0
程序员最喜欢的15款文本编辑器推荐

程序员最喜欢的15款文本编辑器推荐 2017年09月18日 17:30:50 kangle_zhu 阅读数:59390 转载地址:http://www.cr173.com/html/50553_1.html 很多时候比如编程查看代码或者打开各种文档下我们...

linjin200
19分钟前
6
0
如何在php后端及时推送消息给客户端

walkor大神,目前需求是这样的: 有一群商家在后台网页处理批量导入产品 -》 服务器接受请求 -》 开始foreach一个一个处理导入请求; 我现在想每成功导入一个就推送到前台显示已经导入成功,...

dragon_tech
37分钟前
13
0
Java利用hanlp完成语句相似度分析的案例详解

分享一篇hanlp分词工具使用的小案例,即利用hanlp分词工具分析两个中文语句的相似度的案例。供大家一起学习参考! 在做考试系统需求时,后台题库系统提供录入题目的功能。在录入题目的时候,...

左手的倒影
43分钟前
15
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部