下面我将详细讲解“PHP实现递归目录的5种方法”的完整攻略。
1. 什么是递归目录
递归目录是指通过一种特殊的处理方式,对目录中的所有子目录及文件进行访问和处理。通常情况下,递归目录有以下特点:
- 对一个目录进行处理后,会继续对其子目录进行同样的处理。
- 处理顺序一般是从顶层目录开始,依次处理其子目录及文件,直到所有的目录和文件都处理完毕。
- 处理方式可以是输出目录和文件的名称、路径等信息,或进行其他的处理。
2. PHP实现递归目录的方法
2.1 方法一:使用glob函数
function globRecursive($pattern, $flags = 0)
{
$files = glob($pattern, $flags);
foreach (glob(dirname($pattern).'/*', GLOB_ONLYDIR|GLOB_NOSORT) as $dir) {
$files = array_merge($files, globRecursive($dir.'/'.$basename));
}
return $files;
}
// 示例
$files = globRecursive(dirname(__FILE__) . '/*');
print_r($files);
2.2 方法二:使用RecursiveDirectoryIterator类
function listFolderFiles($dir){
$dir = new \RecursiveDirectoryIterator($dir);
$iterator = new \RecursiveIteratorIterator($dir, \RecursiveIteratorIterator::SELF_FIRST);
$files = [];
foreach ($iterator as $file) {
if($file->isDir()) {
$files[] = '目录:' . $file->getPathname();
} else {
$files[] = '文件:' . $file->getFilename();
}
}
return $files;
}
// 示例
$files = listFolderFiles(dirname(__FILE__));
print_r($files);
2.3 方法三:使用RecursiveIteratorIterator类
function listFolderRecursive($dir){
$dir = new \RecursiveIteratorIterator(
new \RecursiveDirectoryIterator($dir),
\RecursiveIteratorIterator::SELF_FIRST
);
$files = [];
foreach ($dir as $file) {
if($file->isDir()) {
$files[] = '目录:' . $file->getPathname();
} else {
$files[] = '文件:' . $file->getFilename();
}
}
return $files;
}
// 示例
$files = listFolderRecursive(dirname(__FILE__));
print_r($files);
2.4 方法四:使用FilesystemIterator类
function listOfDir($dir){
$dir = new \FilesystemIterator($dir);
$files = [];
foreach ($dir as $i => $file) {
if($file->isDir()) {
$files[] = '目录:' . $file->getPathname();
} else {
$files[] = '文件:' . $file->getFilename();
}
}
return $files;
}
// 示例
$files = listOfDir(dirname(__FILE__));
print_r($files);
2.5 方法五:使用scandir函数
function tree($dir){
$result = [];
foreach(scandir($dir) as $key => $value){
if(!in_array($value,array(".",".."))){
if(is_dir($dir. DIRECTORY_SEPARATOR . $value)){
$result[$value] = tree($dir. DIRECTORY_SEPARATOR . $value);
} else {
$result[] = $value;
}
}
}
return $result;
}
// 示例
$files = tree(dirname(__FILE__));
print_r($files);
至此,就讲解了PHP实现递归目录的5种方法,包含了五个函数示例,供大家使用。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:PHP实现递归目录的5种方法 - Python技术站