gpt4 book ai didi

php - 使用 RecursiveDirectoryIterator 将目录和文件列表到数组中?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:58:33 25 4
gpt4 key购买 nike

我有一个具有这种结构的目录:

  • 主要/
    • |- 图片/
      • |-- file1.jpg
      • |-- file2.jpg
      • |-- file3.jpg
    • |- 文件/
      • |-- 私有(private)/
        • |--- blahblahblah.docx
      • |-- 测试.doc
      • |-- 测试.xls
      • |-- 测试.txt

我可以创建一个函数来完成工作,但 RecursiveDirectoryIterator 类这次要快得多,内存使用也更少。我如何使用 RecursiveDirectoryIterator 将这些目录列出到这样的数组中:

 array(  
"main/" => array(
"images/" => array(
"file1.jpg",
"file2.jpg",
"file3.jpg"
),
"documents/" => array(
"private/" => array(
"blahblahblah.docx"
),
"test.doc",
"test.xls",
"test.txt"
)
)
)

最佳答案

好吧,要递归迭代 RecursiveIterator,您需要 RecursiveIteratorIterator (我知道这似乎是多余的,但事实并非如此)...

但是,对于您的特定情况(您希望生成结构而不是仅仅访问所有节点),我认为常规递归更适合...

function DirectoryIteratorToArray(DirectoryIterator $it) {
$result = array();
foreach ($it as $key => $child) {
if ($child->isDot()) {
continue;
}
$name = $child->getBasename();
if ($child->isDir()) {
$subit = new DirectoryIterator($child->getPathname());
$result[$name] = DirectoryIteratorToArray($subit);
} else {
$result[] = $name;
}
}
return $result;
}

编辑它以使用非递归迭代器...

关于php - 使用 RecursiveDirectoryIterator 将目录和文件列表到数组中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3556781/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com