php迭代查找指定目录下所有文件


在oschina上分享了自己写的递归查找指定目录下所有文件的php代码。今天有位网友ichenshy分享了一个用迭代实现的例子。仔细阅读,这段代码写得也很精辟。比我的递归方法效果更好,他使用堆栈的办法我从未想到过,特收藏备用。

function scanfiles($dir){
    if ( ! is_dir($dir) )  return array();
    $dir  = rtrim(str_replace('\\','/',$dir),'/').'/';
    $dirs = array($dir);
    $rt   = array();
    do{
        $dir = array_pop($dirs);//弹出一个目录
        $tmp = scandir($dir);//获取目录列表
        foreach ( $tmp as $f ){
            if ( $f == '.' || $f == '..') continue;
            $path = $dir . $f;
            if ( is_dir($path) ) {//如果是目录就将path压入目录堆栈,等待下次使用
                array_push($dirs,$path.'/');
            } else if(is_file($path)) {//如果是文件就放入文件数组
                $rt[] = $path;
            }
        }
    } while ( $dirs );
    return $rt;
}

 

Archives