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