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()
函数的准确性,确保只获取目录中的文件和子目录。