递归遍历文件目录

递归示例:

// 递归函数,函数体自己调用自己

//输出从$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));

你可能感兴趣的:(递归遍历文件目录)