您的位置:首页 > 编程语言 > PHP开发

php文件夹遍历的几种方法

2018-03-01 11:34 302 查看

函数

function dirTree()
{
if(!is_dir($path)) return [];
$files = [];
$dir = opendir($path);
while($file = readdir($dir)) {
if($file == '.' || $file == '..') continue;
$new_path = trim($path, '/').'/'.trim($file, '/');
$files[] = $new_path;
if(is_dir($new_path)){
$files = array_merge($files, $this->ergodicDir2($new_path));
}
}
closedir($dir);
return $files;
}


Directory类

function dirTree()
{
if(!is_dir($path)) return [];
$files = [];
$dir_h = dir($path);
while($file = $dir_h->read()){
if($file == '.' || $file == '..') continue;
$new_path = trim($path, '/').'/'.trim($file, '/');
$files[] = $new_path;
if(is_dir($new_path)){
$files = array_merge($files, $this->ergodicDir3($new_path));
}
}
$dir_h->close();
return $files;
}


迭代器

function dirTree()
{
if(!is_dir($path)) return [];
$files = [];
$dir = new \DirectoryIterator($path);
foreach ($dir as $key => $file){
if($file->getFilename() == '.' || $file->getFilename() == '..'){
continue;
}
$files[] = $file->getPathname();
if($file->isDir()){
$files = array_merge($files, $this->ergodicDir5($file->getPathname()));
}
}
return $files;
}


function dirTree()
{
$files = array();
/**@var \SplFileInfo $file*/
foreach(new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator($path)) as $file) {
$filename = $file->getFilename();
if($filename == '.' || $filename == '..') continue;
$type = ($file->isDir()) ? '/' : '';
$files[] = $file->getPathname() . $type;
}
return array_unique($files);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: