scandir()
函数在 PHP 中用于读取指定目录中的文件和子目录
使用 scandir()
函数过滤结果:
scandir()
函数返回一个包含目录中所有文件和子目录的数组。你可以使用 array_filter()
函数和匿名函数(闭包)来过滤数组中不需要的结果。例如,只获取文件:
$directory = 'path/to/directory';
$files = array_filter(scandir($directory), function ($item) {
return is_file($directory . '/' . $item);
});
使用 array_map()
和 is_file()
函数过滤结果:
另一种方法是使用 array_map()
函数将目录中的每个项传递给 is_file()
函数,然后获取返回值为 true
的项。
$directory = 'path/to/directory';
$files = array_map(function ($item) use ($directory) {
return is_file($directory . '/' . $item) ? $item : null;
}, scandir($directory));
$files = array_filter($files);
使用 glob()
函数:
glob()
函数允许你使用通配符(如 *
)搜索目录中的文件。这可以提高代码的可读性,并减少错误的可能性。
$directory = 'path/to/directory';
$files = glob($directory . '/*');
使用 RecursiveDirectoryIterator
和 RecursiveIteratorIterator
类:
PHP 提供了用于遍历目录的迭代器类。RecursiveDirectoryIterator
类用于遍历目录,而 RecursiveIteratorIterator
类则用于遍历这些迭代器。这种方法可以更准确地获取目录中的所有文件和子目录。
$directory = 'path/to/directory';
$iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($directory), RecursiveIteratorIterator::SELF_FIRST);
foreach ($iterator as $item) {
if ($item->isDir()) {
// 子目录
} else {
// 文件
}
}
通过使用这些方法,你可以提高 scandir()
函数的准确性,确保只获取目录中的文件和子目录。