如何使用SPL(可能使用RecursiveDirectoryIterator和)检索完整目录树RecursiveIteratorIterator?
SPL
RecursiveDirectoryIterator
RecursiveIteratorIterator
默认情况下,RecursiveIteratorIterator将LEAVES_ONLY用于的第二个参数__construct。这意味着它将仅返回文件。如果要包括文件 和 目录(至少这是我认为的 完整 目录树),则必须执行以下操作:
LEAVES_ONLY
__construct
$iterator = new RecursiveIteratorIterator( new RecursiveDirectoryIterator($path), RecursiveIteratorIterator::SELF_FIRST );
然后您就可以foreach结束它。如果要返回目录树而不是输出它,则可以将其存储在数组中,例如
foreach
foreach ($iterator as $fileObject) { $files[] = $fileObject; // or if you only want the filenames $files[] = $fileObject->getPathname(); }
您还可以通过执行以下操作来创建$fileObjects没有的数组foreach:
$fileObjects
$files[] = iterator_to_array($iterator);
如果只想返回目录,foreach则$iterator可以这样:
$iterator
foreach ($iterator as $fileObject) { if ($fileObject->isDir()) { $files[] = $fileObject; } }