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 }