一个无限循环数组的例子,使用了递归,有需要的朋友可以参考下。
<?php
/**
* Author : GuoWangYunYan
* QQ : 279861795
* Date : 2011-6-23
* link:www.jbuxe.com
*/
//设置编码
header('Content-type: text/html; charset=utf-8');
//比较变态的用了个五维数组
$a = array(
'AAAAAA' => array(
'aaaaaa' => array(
'111111',
'222222',
'333333'
),
'bbbbbb' => array(
'111111',
'222222',
'333333'
),
'cccccc' => array(
'111111',
'222222',
'333333'
),
),
'BBBBBB' => array(
'aaaaaa' => array(
'111111',
'222222',
'333333'
),
'bbbbbb'=> array(
'111111',
'222222',
'333333'
),
'cccccc'=> array(
'111111',
'222222',
'333333'
),
),
'CCCCCC' => array(
'aaaaaa'=> array(
'111111',
'222222',
'333333'
),
'bbbbbb'=> array(
'111111',
'222222',
'333333'
),
'cccccc' => array(
'111111'=>array('44','55','66'),
'222222'=>array('44','55','66'),
'333333'=>array(
'44'=>array('77','88','99'),
'55'=>array('77','88','99'),
'66'=>array('77','88','99'),
),
),
),
);
//执行函数
fun($a);
//无限分类 递归大法开始
function fun ($_info,$deep=0){
//判断是不是数组
if (is_array($_info)){
//foreach 循环
foreach ($_info as $key=>$val){
//第一次前面-没有 以后每次循环增加4个 顺便输出键名
echo str_repeat(' - ',$deep).$key.'<br />';
//递归 输出键值 顺便每次前面增加4个----
fun($val,$deep+4);
}
} else {
//如果键值不是数组 那么 直接返回
echo str_repeat('-', $deep) . "$val<br />";
}
}
?>
递归解释:
递归作为一种算法,在程序设计语言中广泛应用,是指函数/过程/子程序在运行过程中直接或间接调用自身而产生的重入现象。
递归是计算机科学的一个重要概念,递归的方法是程序设计中有效的方法,采用递归编写程序能使程序变得简洁和清晰。
若不采用递归,执行效率相对较低。