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

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

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

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

$nodes 样例数据 截图如下:

运行结果:
-----------------

content: 标题1
content: sdffwewewere
content: 222222
content: uuuuuuuuuu
content: aaaaaaaa
content: uuu 00000000
content: uuu 000 111111111

 

 

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

 1 <?php 
 2 
 3 // 这是无限级的多维数组
 4 $nodes = array( 
 5     0=>array( 
 6         'content' => '标题1',
 7         'sub' => array( 
 8             0=>array( 
 9                 'content' => 'sdffwewewere' ,
10             ) ,  
11             1=>array( 
12                 'content' => '222222' ,
13             ) ,  
14             2=>array( 
15                 'content' => 'uuuuuuuuuu' ,
16                 'sub' => array( 
17                     0=>array( 
18                         'content' => 'uuu 00000000' ,
19                         'sub' => array( 
20                             0=>array( 
21                                 'content' => 'uuu 000 111111111' ,
22                             ) ,  
23                         ) ,
24                     ) ,  
25                 ) ,
26             ) ,  
27             3=>array( 
28                 'content' => 'aaaaaaaa' ,
29             ) ,  
30         ) ,
31     ) ,
32 );
33 
34 // 用压栈的方式遍历数组,非递归方法 
35 foreach ( $nodes as $k => $v ) {
36     
37     // 给栈赋予第1条数据
38     $list[0] = $v;
39     
40     // 只要栈$list 不为空,就一直遍历
41     while ( !empty( $list ) ) {
42         
43         // 取出并删除栈顶部的1条数据
44         $one = array_shift( $list );
45         
46         // 打印取出的那条数据
47         echo ' content: ' , $one['content'] , ' <br>';
48 
49         // 如果取出的那条数据有子节点, 把子节点合并、存入到栈list中去
50         if ( isset( $one['sub'] ) ) {
51             $list = array_merge( $list , $one['sub'] );    
52         }
53     } 
54 }
查看折叠

 

 

 

 

 

转载于:https://www.cnblogs.com/wangqishu/p/3461924.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值