Php 递归目录迭代器以列出目录

Php 递归目录迭代器以列出目录,php,Php,我想使用RecursiveDirectoryIterator以递归方式列出文件和目录。下面是我的代码 $rii=new recursive迭代器(new RecursiveDirectoryIterator(“.”,RecursiveDirectoryIterator::SKIP_DOTS)); foreach($rii作为$file){ 如果($file->isDir()){ echo“D”。$file->getPathName(); }否则{ echo“F”。$file->getPathNa

我想使用RecursiveDirectoryIterator以递归方式列出文件目录。下面是我的代码

$rii=new recursive迭代器(new RecursiveDirectoryIterator(“.”,RecursiveDirectoryIterator::SKIP_DOTS));
foreach($rii作为$file){
如果($file->isDir()){
echo“D”。$file->getPathName();
}否则{
echo“F”。$file->getPathName();
}
回声“
\n”; }
问题是它根本不返回目录。仅列出文件。当我省略SKIP_DOTS标志时,我确实得到了目录,但形式是
dir/
dir/。
,这显然不是我想要的

现在我当然可以自己去除尾随的点,但我想知道是否有更好的内置方法我不知道?

$rdi=new recursivedirectoryderator('.',recursivedirectoryderator::KEY_AS_PATHNAME | recursivedirectoryderator::SKIP_dots);
foreach(新的递归迭代器($rdi,递归迭代器::SELF_FIRST)为$file=>$info){
echo$文件。“\n”;
}
示例文件/目录结构

。
|--a
|`--x
||--hbye.txt
|`--hello.txt
|--b
|”“a
`--script.php
4个目录,3个文件
脚本输出:

/a
/a/x
./a/x/hbye.txt
./a/x/hello.txt
/script.php
/b
/b/a