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()
函數的準確性,確保只獲取目錄中的文件和子目錄。