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

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

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

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

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

$nodes 样例数据 截图如下:

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

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

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 }
查看折叠

 

 

 

 

 

你可能感兴趣的:(PHP)