php用压栈的方式,循环遍历无限级别的数组(非递归方法)

好久不写非递归遍历无限级分类。。。
瞎猫碰到死老鼠,发刚才写的1段代码,压栈的方式遍历php无限分类的数组。。。

php压栈的方式遍历无限级别数组的代码,截图如下:

$nodes 样例数据 截图如下:

运行结果:
-----------------
content: 标题1
content: sdffwewewere
content: 222222
content: uuuuuuuuuu
content: aaaaaaaa
content: uuu 00000000
content: uuu 000 111111111

php压栈的方式遍历无限级别数组,全部代码的code代码文本如下:

 <?php 

 // 这是无限级的多维数组
$nodes = array(
0=>array(
'content' => '标题1',
'sub' => array(
0=>array(
'content' => 'sdffwewewere' ,
) ,
1=>array(
'content' => '222222' ,
) ,
2=>array(
'content' => 'uuuuuuuuuu' ,
'sub' => array(
0=>array(
'content' => 'uuu 00000000' ,
'sub' => array(
0=>array(
'content' => 'uuu 000 111111111' ,
) ,
) ,
) ,
) ,
) ,
3=>array(
'content' => 'aaaaaaaa' ,
) ,
) ,
) ,
); // 用压栈的方式遍历数组,非递归方法
foreach ( $nodes as $k => $v ) { // 给栈赋予第1条数据
$list[0] = $v; // 只要栈$list 不为空,就一直遍历
while ( !empty( $list ) ) { // 取出并删除栈顶部的1条数据
$one = array_shift( $list ); // 打印取出的那条数据
echo ' content: ' , $one['content'] , ' <br>'; // 如果取出的那条数据有子节点, 把子节点合并、存入到栈list中去
if ( isset( $one['sub'] ) ) {
$list = array_merge( $list , $one['sub'] );
}
}
}

查看折叠

php用压栈的方式,循环遍历无限级别的数组(非递归方法)的更多相关文章

  1. 增强for循环遍历集合或数组

    遍历:for循环遍历数组或集合:iterator迭代器遍历集合:还有增强for循环(for each)遍历数组或集合: 遍历数组: 遍历集合:

  2. php中foreach循环遍历二维数组

    最近在用tp3.2框架,在查询的时候用到了select(),这条语句返回的是二维数组,所以在对返回的数据做处理时,遇到了些麻烦,百度了下foreach,终于用foreach解决了数据的筛选问题 (因为 ...

  3. 第三节 java 数组(循环遍历、获取数组的最值(最大值和最小值)、选择排序、冒泡排序、练习控制台输出大写的A)

    获取数组的最值(最大值和最小值) 思路: 1.获取最值需要进行比较,每一次比较都会有一个较大的值,因为该 值不确定,需要一个变量进行临储. 2.让数组中的每一个元素都和这个变量中的值进行比较,如果大于 ...

  4. 分享一个linux系统中循环遍历两个数组内容,并输出数组中的不同内容的shell脚本

    cat diffarray.sh #!/bin/bash arry_list1=(1 2 3 4 5 6 7 8 9) arry_list2=(3 5 8) declare -a diff_list ...

  5. 分析轮子(八)- List.java 各种遍历方式及遍历时移除元素的方法

    注:玩的是JDK1.7版本 1:先尝栗子,再分析,代码简单,注释清晰,可自玩一下 /** * @description:测试集合遍历和移除元素的方式 * @author:godtrue * @crea ...

  6. 手写js代码(一)javascript数组循环遍历之forEach

    注:原文地址http://blog.csdn.net/oscar999/article/details/8671546 我这里是仿照学习! 1.js的数组循环遍历 ①数组的遍历首先想到的是for()循 ...

  7. js 实现循环遍历数组

    for in循环遍历 let arr = [1, 2, 3, 4, 4, 3], str = '' for (const val in arr) { str += val + ' ' } consol ...

  8. 你会用哪些JavaScript循环遍历

    总结JavaScript中的循环遍历定义一个数组和对象 const arr = ['a', 'b', 'c', 'd', 'e', 'f']; const obj = { a: 1, b: 2, c: ...

  9. 二叉树——遍历篇(递归/非递归,C++)

    二叉树--遍历篇 二叉树很多算法题都与其遍历相关,笔者经过大量学习.思考,整理总结写下二叉树的遍历篇,涵盖递归和非递归实现. 1.二叉树数据结构及访问函数 #include <stdio.h&g ...

随机推荐

  1. CentOS下LAMP一键yum安装脚本

    本脚本适用环境: 系统支持:CentOS/Redhat/Fedora 内存要求:≥64M 硬盘要求:2GB以上的剩余空间 服务器必须配置好软件源和可连接外网 必须具有系统 root 权限 建议使用干净 ...

  2. [问题2015S02] 复旦高等代数 II(14级)每周一题(第三教学周)

    [问题2015S02]  设 \(a,b,c\) 为复数且 \(bc\neq 0\), 证明下列 \(n\) 阶方阵 \(A\) 可对角化: \[A=\begin{pmatrix} a & b ...

  3. query判断值是否为空,针对前台提交数据的校验

    1.<input type="hidden" id="key" name="key" value="123"> ...

  4. LaTeX常用数学符号

    之前在写博客做笔记时经常会在Word或WPS里写好数学公式再截图上传,一直觉得这样很low.现在实在是不想再去截图上传了,于是决定开始学一下LaTeX.在博客园中使用数学公式的设置可以参考在博客园使用 ...

  5. [像黑客一样生活] shell终端听音乐之网易云shell版

    这是一个Python程序,使用Python构建,并以mpg123作为后端.Follow me... 特点: Vim 式的流畅操作,支持快捷键绑定 支持电台.收藏等各种特色功能 支持 OS X 及各类 ...

  6. python_way ,day25 CMDB_models (数据库设计)

    from django.db import models from django.contrib.auth.models import User # Create your models here. ...

  7. ember.js学习笔记

    启动服务器 ember server 访问localhost:4200 创建新的路由:ember generate route 路由名称,运行此命令会同时创建一个/templates/.XXXhbs模 ...

  8. redis 安装及相关问题解决

    安装redis 下载,或者用scp命令从其他服务器拷贝 一.安装 解压:tar -zxvf redis-3.0.1.tar.gz 进入:cd redis-3.0.1 编译: make 二.解决问题 1 ...

  9. GC overhead limit exceeded填坑心得

    我遇到这样的问题,本地部署时抛出异常java.lang.OutOfMemoryError:GC overhead limit exceeded导致服务起不来,查看日志发现加载了太多资源到内存,本地的性 ...

  10. MYSQL常见错误及其解决方式

    欢迎和大家交流技术相关问题: 邮箱: jiangxinnju@163.com 博客园地址: http://www.cnblogs.com/jiangxinnju GitHub地址: https://g ...