use*_*124 4 php standards class object
我有一个这种结构的目录:
我可以创建一个函数来完成工作,但这次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"
)
)
)
Run Code Online (Sandbox Code Playgroud)
irc*_*ell 12
好吧,要递归迭代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;
}
Run Code Online (Sandbox Code Playgroud)
编辑它以使用非递归迭代器...