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

<?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'));
?>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值