浅谈 PHP递归的理解(递归听起来很高端的词汇 其实就是两次循环)

$data = [
    [‘pid‘=>0,‘id‘=>1],
    [‘pid‘=>1,‘id‘=>2],

    [‘pid‘=>3,‘id‘=>4],
    [‘pid‘=>0,‘id‘=>3],

];
//对上面的数据进行递归排序(原生的写法)
function genCate( $data, $pid = 0)
{
    static $result = array();
    foreach ($data as $key => $row) {
        if ($row[‘pid‘] == $pid) {
            $result[] = $row;
            $parent_id = $row[‘id‘];
            foreach($data as $v){
                if ($v[‘pid‘] == $parent_id) {
                    $result[] = $v;
                }
            }
        }
    }
    return $result;
}

PHP递归的写法
function genCate( $data, $pid = 0)
{
    static $result = array();
    foreach ($data as $key => $row) {
        if ($row[‘pid‘] == $pid) {
            $result[] = $row;
           // $parent_id = $row[‘id‘];
            genCate($data, $row[‘id‘]);
           /* foreach($data as $v){
                if ($v[‘pid‘] == $parent_id) {
                    $result[] = $v;
                }
            }*/
        }
    }
    return $result;

}

  其实就是同一个数组两次循环 通过变动的是父id 不断找子元素

 

原文地址:https://www.cnblogs.com/wu-yu/p/9871981.html

时间: 2024-11-13 11:19:24

浅谈 PHP递归的理解(递归听起来很高端的词汇 其实就是两次循环)的相关文章

黑客来了。。。键盘钩子,听起来很高端。

首先是这个公共的类:globalKeyboardHook.cs using System; using System.Collections.Generic; using System.Text; using System.Runtime.InteropServices; using System.Windows.Forms; namespace Utilities { /// <summary> /// A class that manages a global low level keyb

37.浅谈js原型的理解

浅谈Js原型的理解 一.js中的原型毫无疑问一个难点,学习如果不深入很容易就晕了!    在参考了多方面的资料后,发现解释都太过专业,对于很多还没有接触过面向对象    语言的小白来说,有理解不了里面的专有名词!如果你没学过c++或者Java之类的更接触底层的语言,那就不要太深究,理解会用自然可以了,当接触到更多语言时慢慢的会理解越来越深刻! 下面我就举例分享一下prototype的概念!知道对于初学者知道这些就足够了! 分析一下,上面这个例子!我们可以知道 People的类型是一个对象!按照j

浅谈 Attention 机制的理解

什么是注意力机制? 注意力机制模仿了生物观察行为的内部过程,即一种将内部经验和外部感觉对齐从而增加部分区域的观察精细度的机制.例如人的视觉在处理一张图片时,会通过快速扫描全局图像,获得需要重点关注的目标区域,也就是注意力焦点.然后对这一区域投入更多的注意力资源,以获得更多所需要关注的目标的细节信息,并抑制其它无用信息. 图片来源:深度学习中的注意力机制,其中红色区域表示更关注的区域. Encoder-Decoder 框架 目前大多数的注意力模型都是依附在 Encoder-Decoder 框架下,

浅谈-对modbus的理解

浅谈-对modbus的理解 一.简介 Modbus由MODICON公司于1979年开发,是一种工业现场总线协议标准.1996年施耐德公司推出基于以太网TCP/IP的Modbus协议:ModbusTCP. Modbus协议是一项应用层报文传输协议,包括ASCII.RTU.TCP三种报文类型. 标准的Modbus协议物理层接口有RS232.RS422.RS485和以太网接口,采用master/slave方式通信. 二.报文 先来简单分析一条MODBUS报文,例如:01  06  00 01  00

浅谈对C#委托理解

刚进入公司不久,就上开始项目,对一个实习生来说还是有一些压力的,初入社会,对于我这个初级程序员来说要学的东西实在太多了,公司最近在做一个winform框架开发的桌面应用程序,众所周知,winform也好,webform也好,里面随处可见的事件驱动,有事件,当然也少不了委托,感觉之前对委托这个概念的理解一直是模模糊糊的,口里都会背的那么几句话:"委托可以把方法当作参数在另一个方法中传递和调用","委托是方法的快捷方式"等等.但是真要深入理解,灵活运用,还是要有良好的代

浅谈Js原型的理解

一.js中的原型毫无疑问一个难点,学习如果不深入很容易就晕了!    在参考了多方面的资料后,发现解释都太过专业,对于很多还没有接触过面向对象    语言的小白来说,有理解不了里面的专有名词!如果你没学过c++或者Java之类的更接触底层的语言,那就不要太深究,理解会用自然可以了,当接触到更多语言时慢慢的会理解越来越深刻! 下面我就举例分享一下prototype的概念!知道对于初学者知道这些就足够了! 分析一下,上面这个例子!我们可以知道 People的类型是一个对象!按照javascript的

浅谈对MVC的理解

1.MVC设计模式理解 MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑.数据.界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑.MVC被独特的发展起来用于映射传统的输入.处理和输出功能在一个逻辑的图形化用户界面的结构中. Model(模型):数据模型,提供要展示的数据,因此包含数据和行为,主要提供了模型数据

浅谈动态规划(个人理解)

动态规划,是常规的解决问题的一种方法,能解决的问题具有子问题的性质,即将大问题化成小问题进行分析解决,动态规划最重要的无非两点:状态和状态转移方程.所谓状态,指的是动态规划在化成每一个小问题时的状态,而状态转移方程,则是动态规划的关键:即将大问题化成小问题的方程:每个小问题的最优解都可以由这个方程得到,而大问题的最优解则是建立在小问题的最优解的基础上,下面我将通过一道经典题目来方便理解动态规划. 经典动规问题之0-1背包问题: 小明在旅行时偶然碰见一些钻石(假设有n个),而他只有一个背包,这个背

jquery浅谈,$function(){}的理解

众所周知,jquery技术最近几年非常火爆,本人自大学毕业的面试中不断的被问及jquery.今天就jquery的理解整理成文档,供大家参考. 经常会看到项目中老前辈们写的代码,//掉的,新加的,有时一个jquery写的很零乱,这时,小手指会不听话,啪啪啪的去敲打的键盘,改改改,改成自己喜欢的样子.可是有时候这样的狂改,反而将零乱的代码改出了bug.不如不改,还是自己的经验不足,导致这种问题的出现. 下面分享一个jquery的小例子: $(function(){ $(#'d1').toggle(f