【发布时间】:2014-05-12 23:37:19
【问题描述】:
我试图以自我优先顺序遍历文件树,因此我希望目录中的文件在进入下一个级别之前首先列出。然而,由于某种原因,这并没有发生。请在下面找到我的代码
$it = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($f["path"], RecursiveDirectoryIterator::SKIP_DOTS), RecursiveIteratorIterator::SELF_FIRST);
foreach ($it as $fileObject) {
echo $fileObject."\n";
}
这将打印以下示例(如果我的输入目录是 /data/documents/
- /data/documents/文件名1.pdf
- /data/documents/文件名2.pdf
- /data/documents/dir A/file 4.jpg
- /data/documents/dir A
- /data/documents/文件名5.pdf
- /data/documents/dirB/filex.pdf
- /data/documents/dirB/filey.jpg
- /data/documents/dirB/dirC/filew.pdf
- /data/documents/dirB/dirC/filev.pdf
- /data/documents/dirB/dirC
- /data/documents/dirB
- /data/documents/文件名r.pdf
是的,文件和目录有时在其命名中都有空格。我在命令行上运行它,使用 php 版本 PHP 5.3.3 (cli)(构建时间:2013 年 12 月 11 日 03:29:57)
任何帮助将不胜感激。
更新: 我希望得到以下输出;
- /data/documents/dir A
- /data/documents/dir A/file 4.jpg
- /data/documents/dirB
- /data/documents/dirB/filex.pdf
- /data/documents/dirB/filey.jpg
- /data/documents/dirB/dirC
- /data/documents/dirB/dirC/filew.pdf
- /data/documents/dirB/dirC/filev.pdf
- /data/documents/文件名1.pdf
- /data/documents/文件名2.pdf
- /data/documents/文件名5.pdf
- /data/documents/文件名r.pdf
【问题讨论】:
-
你的意思是,子目录应该排在第一级文件之后?
-
好吧,选择SELF_FIRST作为选项,我认为第一级文件应该首先出现,然后是目录及其子目录。如您所知,我在子目录之前和之后得到了一些第一级文件。
-
来自这个答案stackoverflow.com/a/12236744/2706988。
::SELF_FIRST列出目录,然后列出其中的文件。 -
不管怎样,正如你所知道的,这个顺序没有被遵循。文件和目录都是混杂的。
-
编辑您的问题并向我们展示您的预期结果。
标签: php