您的位置:首页 > 编程语言 > PHP开发

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

2013-12-06 18:03 736 查看
php用压栈的方式,循环遍历无限级别的数组(非递归方法)

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

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

<?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'] );
}
}
}


查看折叠
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: