在 PHP 中,你可以使用 scandir()
函数或 RecursiveDirectoryIterator
类来实现文件夹的遍历。以下是两种方法的示例:
scandir()
函数scandir()
函数会返回指定目录中的文件和目录的数组。
<?php
function listFiles($dir) {
// 获取目录中的所有文件和目录
$files = scandir($dir);
foreach ($files as $file) {
// 忽略当前目录和上级目录
if ($file == '.' || $file == '..') {
continue;
}
$path = $dir . DIRECTORY_SEPARATOR . $file;
// 如果是目录,递归遍历
if (is_dir($path)) {
echo "目录: $path\n";
listFiles($path);
} else {
echo "文件: $path\n";
}
}
}
// 调用函数遍历目录
listFiles('/path/to/your/directory');
?>
RecursiveDirectoryIterator
类RecursiveDirectoryIterator
类可以递归地遍历目录。
<?php
function listFiles($dir) {
$iterator = new RecursiveIteratorIterator(
new RecursiveDirectoryIterator($dir, RecursiveDirectoryIterator::SKIP_DOTS),
RecursiveIteratorIterator::SELF_FIRST
);
foreach ($iterator as $file) {
if ($file->isDir()) {
echo "目录: " . $file->getPathname() . "\n";
} else {
echo "文件: " . $file->getPathname() . "\n";
}
}
}
// 调用函数遍历目录
listFiles('/path/to/your/directory');
?>
scandir()
方法:
scandir()
函数返回指定目录中的所有文件和目录的数组。is_dir()
函数判断是否为目录,如果是目录则递归调用 listFiles()
函数。RecursiveDirectoryIterator
方法:
RecursiveDirectoryIterator
类可以递归地遍历目录。RecursiveIteratorIterator
类用于遍历 RecursiveDirectoryIterator
对象。SKIP_DOTS
标志用于跳过 .
和 ..
目录。SELF_FIRST
标志表示先遍历目录本身,然后再遍历其子目录和文件。这两种方法都可以有效地遍历文件夹及其子文件夹中的内容。根据你的需求选择合适的方法即可。