php数组循环指针递归,有关PHP数组递归遍历的一点理解

首先,定义一个多个层级的数组。

1、首先是有键值对的数组;

2、其中部分只有值没有键;

复制代码 代码如下:

/**

desc:数组

*/

$arr = array (

"1" => 'test',

'2' => 'me',

array (

"3" => "beij",

"4" => "zz"

),

"45",

array (

"5" => "5",

"6" => "ewrwer",

"7" => "ssss",

array (

"8" => "ssd",

"9" => "bdex"

),

"10",

"11"

)

);

?>

接下来,编写递归函数打印这个数组:

复制代码 代码如下:

/**

desc:递归遍历数组

link:www.jquerycn.cn

date:2013/2/22

*/

function RecursiveArr($patten, $array) {

foreach ( $array as $value ) {

if (is_array ( $value )) {

$patten = $patten . $patten;

RecursiveArr ( $patten, $value );

} else {

echo "

" . $patten . "【" . key ( $array ) . "】" . ": " . $value . "
" . "

";

next ( $array ); // 给key赋值后需要移动到下一个,key才会更新

}

}

}

?>

调用示例:

复制代码 代码如下:

RecursiveArr ( '-', $arr );

出现下面图中的结果:

1405522302_7553.jpg

从上面的运行结果图可以看出,发现有些键是重复的。

为了比对区别和联系,接下来再看段代码:

复制代码 代码如下:

/**

desc:递归遍历数组

link:www.jquerycn.cn

date:2013/2/22

*/

function RecursiveArr($patten, $array) {

foreach ( $array as $value ) {

if (is_array ( $value )) {

$patten = $patten . $patten;

RecursiveArr ( $patten, $value );

} else {

echo "

" . $patten . "【" . key ( $array ) . "】" . ": " . $value . "
" . "

";

}

next ( $array ); // 给key赋值后需要移动到下一个,key才会更新

}

}

如果我把之前的递归函数改成上面的code,运行结果图如下:

1405522302_7993.jpg

从上面的两种结果图应该可以看出一些什么了吧,亲。

说明:

若把next()函数使用在foreach中的if-else代码段中,则不同层级的顺序是可以记录和遵循的;

但如果把next()函数使用在foreach中的if-else代码段外的话,则顺序就是不区分层级直接递增的。

因此,如果需要针对键值进行处理,则需要格外的注意此处的变化,否则可能会让你像子弹一样飞...哈!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值