在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; }