先设置数据在本地数据库,设置前要先了解pid字段的关系。如果做成菜单还需添加一个路由字段,自行定义。

第一种方式

先将数据提取出转换成数组。重点是Yarray方法里的递归方式。

接下来进行解析方式。

重点:一定要在进行递归之前声明一个静态数组,不然会导致数组覆盖。剩下 的就是注释的内容也就是判断父节点与节点来判断等级。

这步指来回方法调用本身进行处理递归。

最后数据会变成

其中关系为pid数值存在与id下的下级关系,level为处于第几级;

我们来输出一下看看结构;

第二种

还是从提取一个数组开始就不多叙述了;

接下来创建一个空数组;把提取出来的数据放进去;

进行第二次遍历循环,形成树状结构

这个方法的核心在于引用,php变量默认的传值方式是按指传递
也就是说 假如说 遍历顺序是 河北省 邯郸市 当遍历到河北省时 会把河北省放到tree中 遍历到邯郸市时 会把邯郸市放到河北省的子节点数组中 但是!!! 这会儿的tree数组中 河北省已经放进去了 根据php变量按值传递的规则 你并没有更改tree数组中的河北省的数据 所以这里用到了引用传递

看一下结果;

如在前端使用,自己设置好foreach与if之间的嵌套;

又是学废的一天;

php 递归 递归方式与算法相关推荐

  1. python以递归的方式实现十进制转二进制算法(附完整源码)

    python以递归的方式实现十进制转二进制算法 def binary_recursive(decimal: int) -> str:decimal = int(decimal)if decima ...

  2. python画树递归_用递归的方式绘制小树_Python数据结构实战(1):递归(算法面试)_Python视频-51CTO学院...

    购买本课程后,可以加51CTO学院李宁老师官方交流群:550369460注意,该群只允许购买李宁老师课程的学员进行技术交流,加群时需要提供在51CTO购买李宁老师课程的订单编号(任何一个课程的订单编号 ...

  3. 刷题:二叉树的非递归遍历方式

    二叉树的非递归的遍历方式 上篇博客记录了二叉树的递归遍历方式以及根据二叉树的遍历结果还原二叉树的内容. 本篇博客记录二叉树的非递归的遍历方式. 二叉树的非递归遍历需要借助栈来实现,而且三种遍历的方式的 ...

  4. C语言试题八十一之利用递归函数调用方式,将所输入的5个字符,相反顺序打印

    1.题目 利用递归函数调用方式,将所输入的5个字符,相反顺序打印 2 .温馨提示 C语言试题汇总里可用于计算机二级C语言笔试.机试.研究生复试中C程序设计科目.帮助C语言学者打好程序基础.C语言基础, ...

  5. 程序员的算法课(3)-递归(recursion)算法

    一.什么是递归 递归是一种数学上分而自治的思想. 递归将大型复杂问题转化为与原问题相同但规模较小 的问题进行处理 递归需要有边界条件,当边界条件不满足时,递归继续进行:当边界条件满足时,递归停止 [百 ...

  6. c 递归下降识别程序_程序员的算法课(3)-递归(recursion)算法

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/m0_37609579/article/ ...

  7. 如何使用非递归的方式后序遍历二叉树

    首先,后序遍历是按照左右根(LRN)的顺序遍历的.如果要求以递归的方式遍历二叉树,还是蛮简单的.只需要在树非空的情况下,依次递归调用传参(左子树),(右子树),再访问结点(或者是进行一些具体的操作,比 ...

  8. Javascript用递归的方式遍历json数组

    前言 Javscript语言有很多值得探究和注意的地方,下面我们来看一下用递归的方式遍历JSON对象数组. 正文 假设我们的要遍历的数组是这样的: var array = [{id: 1,childr ...

  9. 非递归遍历二叉树(算法导论第三版第十章10.4-5)

    非递归遍历二叉树(算法导论第三版第十章10.4-5) template<typename T> void TraverseBinaryTreeNonRecursive(BinaryTree ...

  10. 二叉树非递归后序遍历算法

    与正常的非递归中序遍历算法不同于两点: 一  比正常的中序遍历算法多了对数据元素的标记. 在压数据元素入栈(标记记为0,用来表示访问了其左子树)时标记, 还有访问完左子树利用gettop()获取双亲通 ...

最新文章

  1. linux lib lib64 区别,lib,lib32,lib64,libx32和libexec之间的区别
  2. [转]关于数据中台、数据平台、数据仓库、数据湖等数据概念的对比解析
  3. 【转载】周鸿祎:做产品体验先把自己切换到二傻子模式
  4. 前端学习(1804):前端调试之列表伪类
  5. Python 数据分析三剑客之 Pandas(三):算术运算与缺失值的处理
  6. 再谈Js定义变量,你不得不踩的那些坑
  7. 采用计算机数控技术的自动控制系统为,数控机床控制系统
  8. [UOJ336]无限之环
  9. 原生JavaScript事件详解
  10. java虚拟机:虚拟机栈
  11. 已有一个名为“frmadd”的组件。组件的名称必须是唯一的,而且名称必须不区分大小
  12. ASP.NET MVC扩展自定义视图引擎支持多模板动态换肤skins机制
  13. kubernetes 查看所有namespace、默认的namespace
  14. ajax(3)---Conmon.js
  15. 双目相机计算稠密深度点云详解教程
  16. 将微信和支付宝支付的个二维码合二为一
  17. html横向导航二级菜单代码,横向二级导航菜单
  18. 数字电路:常见的锁存器浅析(S-R,S‘-R‘,使能端的S-R,D)
  19. 使用Python pip怎么升级pip
  20. 画图神器-drawio(配合markdown使用更佳)

热门文章

  1. [NCTF2019]Fake XML cookbook 1
  2. C#iText7对PDF进行签章
  3. Google BERT 中文应用之《红楼梦》中对话人物提取
  4. Tomcat和Java版本对照
  5. linux下socket编程带来的尴尬
  6. Apache PHP 的gzip压缩输出的实现方法
  7. ICPR 2022 | 多模态字幕识别竞赛正式启动!
  8. 计算机技术与软件业余资格测验证书,在大学能否领到网络工程师资格证?网络工程师考核..._出版资格_帮考网...
  9. Spring知识点记录
  10. 8000401a错误解决方案(Excel)