parent数组成等级菜单全展开式顺序排列

public function buildM($data,$parent=0){//分级数组
        $tree=array();
        foreach ($data as $node){
            if($node["parent"]==$parent){
                $children = $this->buildM($data,$node[‘id‘]);
                if($children){
                    $node["children"] = $children;
                }
                $tree[] = $node;
            }
        }
            return $tree;
        }
    
    public function buildN($data){//展开分级数组
        foreach ($data as $node){
            if(isset($node[‘children‘])){
                $children = $node[‘children‘];
                unset($node[‘children‘]);
                $tree[] = $node;
                $tree = array_merge($tree,$this->buildN($children));
            }else {
                $tree[] = $node;
            }
        }
        return $tree;
    }

时间: 2024-12-16 22:39:44

parent数组成等级菜单全展开式顺序排列的相关文章

树状数组成段更新——POJ 3468

A Simple Problem with IntegersCrawling in process... Crawling failed Time Limit:5000MS     Memory Limit:131072KB     64bit IO Format:%I64d & %I64u Submit Status Practice POJ 3468 Description You have N integers, A1, A2, ... , AN. You need to deal wit

二级导航菜单全屏展示

实现效果: 1.二级菜单下拉展示的全屏展示,下拉内容块居中 2.一级菜单 并不是所有都有二级下拉菜单 ,不能使用,通过比较标签内的属性来确认具体是哪个一级导航有下拉菜单,比如 <div index="product"></div>对比一级菜单和二级菜单的index属性来显示对应的内容: <ul> <li> <a href="#">一级导航</a> <div class="sub_

oracle设定菜单全路径

1.首先设定一级菜单的full_name(全路径) update S_DEPARTMENT t set t.full_name = 'XX集团' where fid='-1'; 2.设定二级菜单的full_name update ( select a.dep_name,a.full_name,b.dep_name dd,b.full_name cc from (select * from S_DEPARTMENT where dep_level = '2') a , -- 获取二级菜单 (sel

混乱无序的整数数组如何实现左侧全是奇数右侧全是偶数(数字不要求排序)

今天同事估计闲得蛋疼,突然开始回忆以前面试过程中被面到过的一些面试问题,有逻辑的,有算法的,然后来考我思路,标题对应的算法就是他碰到的面试算法题之一. 拿到题目的第一个感觉,就是Linq,被Linq带坏了,这种考算法的题目直接来Linq你都逗谁呢,整理一下思路,恩,题目只要求左侧奇数,右侧偶数,并未要求两侧的整数还要分别排序,那算法思路就这么定下来了,按索引从低向高循环,如果遇到偶数,则在循环内进行反向循环,即从高位向低位循环找奇数来实现两者位置交替,算法实现如下: static void Se

随机生成 10 个不重复的数组成数组

// todo: 随机生成 10 个 20~200 之间的随机整数组成 length 为 10 的数组var arr = [];while(arr.length < 10){    var num = Math.round(180*Math.random()) + 20;    arr.push(num);}arr; // todo: 随机生成 10 个 20~200 之间的随机整数组成 length为 10 且从小到大排序的数组var arr = [];while(arr.length <

&lt;有序数组&gt;转化为&lt;按二分法遍历顺序排列的数组&gt;(C++实现)

在进行参数试错时,通常将可能的参数由小到大排列一个个进行测试,这样的测试顺序很多时候不太合理,因此写了一个按二分法遍历顺序排列的算法,通常能更快的找到合适的参数.代码如下: /************************************************* Function: // BinarySort Description: // sort array according to the traversal sequence of dichotomy Input: // sr

ajax交互数据简单拼装,数组成字符串

json2Form:function(json) { var str = ""; for(var p in json){ // 判断对象是否为数组 if(typeof json[p]=="object"){ var m=String(p) for(var i=0;i<json[p].length;i++){ for(var x in json[p][i]){ str+=m+"["+i+"]"+"["+

C语言并查集例子——图问题巧用parent[]数组

输入:测试输入包含若干测试用例.每个测试用例的第1行给出两个正整数,分别是城镇数目N ( < 1000 )和道路数目M:随后的M行对应M条道路,每行给出一对正整数,分别是该条道路直接连通的两个城镇的编号.为简单起见,城镇从1到N编号.注意:两个城市之间可以有多条道路相通,也就是说3 31 21 22 1这种输入也是合法的当N为0时,输入结束,该用例不被处理. 输出:对每个测试用例,在1行里输出最少还需要建设的道路数目. #include <stdio.h> #include <st

[LeetCode] Split Array with Equal Sum 分割数组成和相同的子数组

Given an array with n integers, you need to find if there are triplets (i, j, k) which satisfies following conditions: 0 < i, i + 1 < j, j + 1 < k < n - 1 Sum of subarrays (0, i - 1), (i + 1, j - 1), (j + 1, k - 1) and (k + 1, n - 1) should be