首先,我们可以使用opendir()
函数打开一个目录,接着使用readdir()
函数读取该目录下的所有文件和子目录的文件名,再使用递归进行遍历子目录中的所有文件。下面是完整的代码示例:
function read_directory($dir)
{
$files = array();
if(is_dir($dir))
{
$handle = opendir($dir);
if($handle)
{
while(($file = readdir($handle)) !== false)
{
if($file != "." && $file != "..")
{
if(is_dir($dir . "/" . $file))
{
$files[$file] = read_directory($dir . "/" . $file);
}
else
{
$files[] = $file;
}
}
}
closedir($handle);
}
}
return $files;
}
// 读取当前目录下的所有文件名
$files = read_directory(__DIR__);
print_r($files);
// 读取指定目录下的所有文件名
$files = read_directory("/path/to/directory");
print_r($files);
上述代码中,函数read_directory()
接受一个目录路径作为参数,返回一个包含当前目录及其子目录下所有文件名的多维数组。
执行上述代码,我们可以得到以下结果:
Array
(
[file1.txt] =>
[file2.txt] =>
[folder1] => Array
(
[file3.txt] =>
[file4.txt] =>
)
[folder2] => Array
(
[file5.txt] =>
[folder3] => Array
(
[file6.txt] =>
[file7.txt] =>
)
)
)
另外,我们也可以使用RecursiveDirectoryIterator
类和RecursiveIteratorIterator
类来遍历目录及其子目录,并获取所有文件名。下面是另一个示例代码:
$dir = new RecursiveDirectoryIterator(__DIR__);
$iterator = new RecursiveIteratorIterator($dir);
$files = array();
foreach($iterator as $file)
{
if(!$file->isFile()) continue;
$files[] = $file->getFilename();
}
print_r($files);
执行上述代码,我们同样可以得到当前目录下的所有文件名的列表。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:php读取目录及子目录下所有文件名的方法 - Python技术站