递归示例:
// 递归函数,函数体自己调用自己
//输出从$i到0再回到$i.
function lt($i){
echo $i.'
';
if($i>=1){
$func = __FUNCTION__;
$func($i-1);
}
echo $i.'
';
}
//输出从$i到$j再回到$i.
function gt($i,$j){
echo $i.'
';
if($i<$j){
$func = __FUNCTION__;
$func($i+1,$j);
}
echo $i.'
';
}
// lt(5);
gt(4,9);
//递归遍历文件目录
/**
* 遍历输出显示文件夹
* @param string $path 要遍历的目录
* @param string [$mark] 层级间隔符
* @param string [$mark] 目录标示符
* @param int [$lev] 层级数,默认从0开始
*/
function listDir($path,$mark="-",$fmark="",$lev=0){
if(!is_dir($path)){
echo $path.'不是目录!!!
';
if(!file_exists($path)){
echo $path.'文件不存在!!!
';
return;
}else{
echo '文件'.$path.'存在';
return;
};
}
$fh = opendir($path);
$handle = readdir($fh);
while(($file = readdir($fh)) !== false){
if(($file == '.' || $file == '..')){
continue;
}
if(is_dir($path.'/'.$file)){
echo str_repeat($mark,$lev),''.$fmark.iconv('gbk','utf-8',$file).''.'
';
listDir($path.'/'.$file,$mark,$fmark,$lev+1);
}else{
echo str_repeat($mark,$lev),iconv('gbk','utf-8',$file).'
';
}
}
closedir($fh);
}
*******************************************************
function ListDir($path,$lev=0,$sign="?"){
$file = opendir($path);
while(($row = readdir($file)) !== false){
$lev=$lev;
if(($row == '.')||($row == '..')){
continue;
}
if(!is_dir($path.'/'.$row)){
echo str_repeat($sign,$lev),$row.'
';
}else{
echo ''.str_repeat($sign,$lev),$row.'/-------目录
';
ListDir($path.'/'.$row,$lev+4);
}
}
closedir($file);
}
ListDir('.');
/*********递归练习,把多维数组中所有值为数字的进行*2处理***********/
$arr = array(1,2,3,array('c',4,5,array('d',6,7,array(8))));
print_r($arr);
function arrtest($arr){
foreach($arr as $k=>$v){
if(is_int($v)){
$arr[$k] = $v*2;
}elseif(is_array($v)){
$arr[$k] = arrtest($v);
}else{}
}
return $arr;
}
echo '
';
print_r(arrtest($arr));
网友评论