您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

如何使用SPL检索完整目录树?

如何使用SPL检索完整目录树?

认情况下,RecursiveIteratorIteratorLEAVES_ONLY用于的第二个参数__construct。这意味着它将仅返回文件。如果要包括文件 目录(至少这是我认为的 完整 目录树),则必须执行以下操作:

$iterator = new RecursiveIteratorIterator(
    new RecursiveDirectoryIterator($path),
    RecursiveIteratorIterator::SELF_FIRST
);

然后您就可以foreach结束它。如果要返回目录树而不是输出它,则可以将其存储在数组中,例如

foreach ($iterator as $fileObject) {
    $files[] = $fileObject;
    // or if you only want the filenames
    $files[] = $fileObject->getPathname();
}

您还可以通过执行以下操作来创建$fileObjects没有的数组foreach

$files[] = iterator_to_array($iterator);

如果只想返回目录,foreach$iterator可以这样:

foreach ($iterator as $fileObject) {
    if ($fileObject->isDir()) {
        $files[] = $fileObject;
    }
}
其他 2022/1/1 18:13:38 有595人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶