- /**
- 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:bbs.it-home.org
- 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 );
出现下面图中的结果:
从上面的运行结果图可以看出,发现有些键是重复的。
为了比对区别和联系,接下来再看段代码:
- /**
- desc:递归遍历数组
- link:bbs.it-home.org
- 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,运行结果图如下:
从上面的两种结果图应该可以看出一些什么了吧,亲。
说明:
若把next()函数使用在foreach中的if-else代码段中,则不同层级的顺序是可以记录和遵循的;
但如果把next()函数使用在foreach中的if-else代码段外的话,则顺序就是不区分层级直接递增的。
因此,如果需要针对键值进行处理,则需要格外的注意此处的变化,否则可能会让你像子弹一样飞...哈! |