您的位置:首页 > 其它

递归 / 迭代两种方法实现查找指定目录下所有文件

2013-03-27 09:27 961 查看
<?php
/**
* 查找指定目录下所有文件
*/

// 递归处理方案
function getAllFileName($dir, &$list = array())
{
if(!is_dir($dir))
return array();

$dir = rtrim(str_replace( '\\', '/' , $dir), '/').'/'; //将所有‘\’ 换成 ‘/’,补齐末端的‘/’
$dh = opendir($dir);
while (($file = readdir($dh)) !== FALSE)
{
if('.' != $file && '..' != $file)
{
$temp = $dir.$file;
if(is_dir($temp))
getAllFileName($temp, $list);
else
$list[] = $file;
}
}
closedir($dh);

return $list;
}

// 迭代处理方案
function getAllFileName1($dir)
{
$return = array();
if(!is_dir($dir))
return $return;

$dir = rtrim(str_replace( '\\', '/' , $dir), '/').'/'; //将所有‘\’ 换成 ‘/’,补齐末端的‘/’
$dirs = array($dir);
do
{
$dir = array_pop($dirs);
$temp = scandir($dir);
foreach ($temp as $f)
{
if ($f == '.' || $f == '..')
continue;

$path = $dir.$f;
if(is_dir($path))
array_push($dirs, $path. '/');
else
$return[] = $f;
}
} while($dirs);

return $return;
}

var_dump(getAllFileName('E:\Work\coder\trunk\test'));
var_dump(getAllFileName1('E:\Work\coder\trunk\test'));
?>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐