用递归得到栏目的数组

栏目组的信息结构如上表,pid表示父节点的id

static public function toLayer($cate,$name=‘child‘,$pid=0){
    $arr=array();
    foreach($cate as $v){
        if($v[‘pid‘]==$pid){
            $v[$name]=self::toLayer($cate,$name,$v[‘id‘]);
            $arr[]=$v;
        }
    }
    return $arr;
}

其中$cate为查询表得到的关联数组,得到的结果数组如下:

Array
(
    [0] => Array
        (
            [id] => 1
            [name] => 常规管理
            [pid] => 0
            [module] =>
            [action] =>
            [parameter] =>
            [quick] => 0
            [status] => 1
            [sort] => 1
            [child] => Array
                (
                    [0] => Array
                        (
                            [id] => 5
                            [name] => 栏目管理
                            [pid] => 1
                            [module] =>
                            [action] =>
                            [parameter] =>
                            [quick] => 0
                            [status] => 1
                            [sort] => 11
                            [child] => Array
                                (
                                    [0] => Array
                                        (
                                            [id] => 8
                                            [name] => 栏目管理
                                            [pid] => 5
                                            [module] => Category
                                            [action] => index
                                            [parameter] =>
                                            [quick] => 0
                                            [status] => 1
                                            [sort] => 111
                                            [child] => Array
                                                (
                                                )

                                        )

                                )

                        )

                    [1] => Array
                        (
                            [id] => 6
                            [name] => 内容管理
                            [pid] => 1
                            [module] =>
                            [action] =>
                            [parameter] =>
                            [quick] => 0
                            [status] => 1
                            [sort] => 12
                            [child] => Array
                                (
                                )

                        )

                    [2] => Array
                        (
                            [id] => 7
                            [name] => 快捷面板
                            [pid] => 1
                            [module] =>
                            [action] =>
                            [parameter] =>
                            [quick] => 0
                            [status] => 1
                            [sort] => 13
                            [child] => Array
                                (
                                )

                        )

                )

        )

    [1] => Array
        (
            [id] => 2
            [name] => 模块管理
            [pid] => 0
            [module] =>
            [action] =>
            [parameter] =>
            [quick] => 0
            [status] => 1
            [sort] => 2
            [child] => Array
                (
                    [0] => Array
                        (
                            [id] => 9
                            [name] => 内置模块
                            [pid] => 2
                            [module] =>
                            [action] =>
                            [parameter] =>
                            [quick] => 0
                            [status] => 1
                            [sort] => 21
                            [child] => Array
                                (
                                    [0] => Array
                                        (
                                            [id] => 10
                                            [name] => 自由块管理
                                            [pid] => 9
                                            [module] => Block
                                            [action] => index
                                            [parameter] =>
                                            [quick] => 0
                                            [status] => 1
                                            [sort] => 211
                                            [child] => Array
                                                (
                                                )

                                        )

                                    [1] => Array
                                        (
                                            [id] => 11
                                            [name] => 广告管理
                                            [pid] => 9
                                            [module] => Abc
                                            [action] => index
                                            [parameter] =>
                                            [quick] => 1
                                            [status] => 1
                                            [sort] => 212
                                            [child] => Array
                                                (
                                                )

                                        )

                                    [2] => Array
                                        (
                                            [id] => 12
                                            [name] => 专题管理
                                            [pid] => 9
                                            [module] => Special
                                            [action] => index
                                            [parameter] =>
                                            [quick] => 0
                                            [status] => 1
                                            [sort] => 213
                                            [child] => Array
                                                (
                                                )

                                        )

                                    [3] => Array
                                        (
                                            [id] => 13
                                            [name] => 公告管理
                                            [pid] => 9
                                            [module] => Announce
                                            [action] => index
                                            [parameter] =>
                                            [quick] => 1
                                            [status] => 1
                                            [sort] => 214
                                            [child] => Array
                                                (
                                                )

                                        )

                                    [4] => Array
                                        (
                                            [id] => 14
                                            [name] => 友情链接
                                            [pid] => 9
                                            [module] => Link
                                            [action] => index
                                            [parameter] =>
                                            [quick] => 1
                                            [status] => 1
                                            [sort] => 215
                                            [child] => Array
                                                (
                                                )

                                        )

                                    [5] => Array
                                        (
                                            [id] => 15
                                            [name] => 留言本管理
                                            [pid] => 9
                                            [module] => Guestbook
                                            [action] => index
                                            [parameter] =>
                                            [quick] => 1
                                            [status] => 1
                                            [sort] => 216
                                            [child] => Array
                                                (
                                                )

                                        )

                                    [6] => Array
                                        (
                                            [id] => 16
                                            [name] => 评论管理
                                            [pid] => 9
                                            [module] => Comment
                                            [action] => index
                                            [parameter] =>
                                            [quick] => 1
                                            [status] => 1
                                            [sort] => 217
                                            [child] => Array
                                                (
                                                )

                                        )

                                )

                        )

                    [1] => Array
                        (
                            [id] => 44
                            [name] => 其他模块
                            [pid] => 2
                            [module] =>
                            [action] =>
                            [parameter] =>
                            [quick] => 0
                            [status] => 1
                            [sort] => 22
                            [child] => Array
                                (
                                )

                        )

                )

        )
时间: 2024-10-05 20:28:07

用递归得到栏目的数组的相关文章

Python学习笔记 之 递归、二维数组顺时针旋转90°、正则表达式

递归.二维数组顺时针旋转90°.正则表达式 1.   递归算法是一种直接或间接调用自身算法的过程. 特点: 递归就是在过程或函数里调用自身 明确的递归结束条件,即递归出口 简洁,但是不提倡 递归次数多容易造成栈溢出 要求: 每次调用递归规模上有所减小 前一次为后一次做准备 规模较小时必须直接给出解答而不再进行递归调用 例子:递归实现二分法 1 def searchMyData(mydate,a1): 2 mid = int(len(mydate)/2) 3 if mid >= 1: 4 if m

利用递归把多维数组转为一维数组的函数

函数名称:array_multi2single 函数原形:array array_multi2single(array) 实现功能:把一个多维数组的数值存放到一维数组中,不保存Key. < ?php function array_multi2single($array) {     static $result_array=array();     foreach($array as $value)     {         if(is_array($value))         {    

用递归的方法求数组中的最大数

思路: 得到全部5个中最大的数--> 比较第5个数与前四个中最大数的值-> 得到前四个中最大的数--> 比较第四个数与前三个中最大数的值-->得到前三个数中的最大值-->比较第三个数与前两个中最大数的值-->得到前两个数中最大的值-->比较第二个数与第一个数中的最大值 但实际运算是从最右端往左端逐步(和上面的执行路径正好相反)比较的. 1 package test; 2 3 public class ArrayMax { 4 5 public static voi

第五天:C基础之递归与二维数组

写递归函数时要明确结束条件和递归体. 练习了几个递归函数: 首先是斐波那契数,前几天写过的程序,今天写的时候还是出现了问题.在判断结束条件的时候写错.写成(i==1&&i==2) 这个是有明显的逻辑错误. 1 斐波那契#include<stdio.h> 2 int fbnq(int i) 3 { 4 if(i==1) 5 return 1; 6 if(i==2) 7 return 1; 8 int ret = fbnq(i-1)+fbnq(i-2); 9 10 return r

简单的无限分类中递归子栏目

<?php /* * 找子栏目 */ $area=array( array('id'=>1,'name'=>'中国','parent'=>0), array('id'=>2,'name'=>'广东','parent'=>1), array('id'=>3,'name'=>'深圳','parent'=>2), array('id'=>4,'name'=>'湖南','parent'=>1), array('id'=>5,'na

PHP递归重新排序无限级分类数组

public static function Menus($id,$spac=0){ /* $data = array( 1 => array('id' => 1,'name' => 'name1','pid' => 0), 2 => array('id' => 2,'name' => 'name2','pid' => 0), 3 => array('id' => 3,'name' => 'name3','pid' => 1), 4

PHP递归方式把一个数组里面的null转换为空字符串”的方法

在一些接口的调用中,直接查询数据库出来的字段可能为null字段,但是为了简便前端的判断,需要把null转换成空字符串'',这个时候就需要递归的方式进行.直接上代码如下: //递归方式把数组或字符串 null转换为空''字符串 public function _unsetNull($arr){ if($arr !== null){ if(is_array($arr)){ if(!empty($arr)){ foreach($arr as $key => $value){ if($value ===

递归判断多维数组中对象是否有值

一个项目需求中,需要判断数组中的对象是否有值,先看下数据结构: let list = [ { value: "1", children: [ { value: "2", }, { value: "3", children: [ { value: "4", }, ] } ] }, { value: "5", } ] 那么如何进行判断多层子集是否有值呢?这里就会用到递归来实现 function ruleVali

无限极分类不用递归生成多维数组(树)的方法

最近在项目中碰到的一个实际问题:后台商品分类用的是无限极方法(如图1所示), (图1) 现在前台要根据分类遍历出三级导航(效果如图2所示), (图2) 需要把查询出来的数据处理成多维数组,方便前台用多个foreach嵌套遍历. 网上多方搜集资料.经过验证成功后,记录解决方案如下: 1.从数据库查询出所有数据(项目用的ThinkPHP框架): 2.对数据进行初步处理,使二维数组的"键"与三维数组的id相等,将数据存入新数组$tmp: 1 $info = D('classify')->