Php 使用RecursiveDirectoryIterator的文件夹/子文件夹列表
我正在使用此代码获取曲目的每个文件夹/子文件夹的列表:Php 使用RecursiveDirectoryIterator的文件夹/子文件夹列表,php,Php,我正在使用此代码获取曲目的每个文件夹/子文件夹的列表: $path = realpath($userdir); foreach (new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path)) as $filename) { echo "$filename\n"; } 但是,它会显示如下内容,即添加点或双点,并显示文件夹两次: C:\wamp\www\gg\ftp\repository\user\mist
$path = realpath($userdir);
foreach (new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path)) as $filename)
{
echo "$filename\n";
}
但是,它会显示如下内容,即添加点或双点,并显示文件夹两次:
C:\wamp\www\gg\ftp\repository\user\mister
C:\wamp\www\gg\ftp\repository\user\mister
C:\wamp\www\gg\ftp\repository\user\mister\apatik
C:\wamp\www\gg\ftp\repository\user\mister\apatik
C:\wamp\www\gg\ftp\repository\user\mister\vvxcv
C:\wamp\www\gg\ftp\repository\user\mister\vvxcv
C:\wamp\www\gg\ftp\repository\user\mister\vvxcv\vcxvcx
C:\wamp\www\gg\ftp\repository\user\mister\vvxcv\vcxvcx
而不是像这样更干净的东西:
C:\wamp\www\gg\ftp\repository\user\mister
C:\wamp\www\gg\ftp\repository\user\mister\apatik
C:\wamp\www\gg\ftp\repository\user\mister\vvxcv
C:\wamp\www\gg\ftp\repository\user\mister\vvxcv\vcxvcx
有办法吗?我以前使用过函数glob
glob($sub . '/*' , GLOB_ONLYDIR);
它正确地显示了文件夹,但我无法使其递归显示子文件夹
谢谢你需要这样的东西
set_time_limit(0);
function scanDirectory($sub = ''){
$folders = glob($sub . '/*' , GLOB_ONLYDIR);
foreach($folders as $folder){
echo "$folder<br />";
scanDirectory($folder);
}
}
scanDirectory();
设置时间限制(0);
函数扫描目录($sub=''){
$folders=glob($sub./*',glob_ONLYDIR);
foreach($folders作为$folder){
回显“$folder
”;
scanDirectory($文件夹);
}
}
董事会();
这将列出当前驱动器上的所有文件夹
编辑
$folders=glob($sub./*',glob_ONLYDIR)代码>将获取指定目录中的所有文件夹
foreach($folders as$folder)
将在文件夹
数组上循环
$sub
将是要浏览的文件夹名称
这些是文件夹
A、B、C
$folders
将有类似的$folders['A','B','C']
在循环中,每个ab和C
将作为$sub
传递,以检查其中是否有更多的文件夹。我相信
和。
被认为是目录,实际上是父目录。从递归函数中删除名为
和的目录。
是的,这也是我的想法,但我的文件夹中没有这样的目录,glob函数没有显示它们。在linux中,它们肯定在那里。在windows命令shell中,您可以通过对父目录执行cd..
来更改目录!如果($path='.| |$path==''..)返回,则抛出一个if代码>或类似的东西!您至少需要
一个,因为它是实际目录。如果您想在不带点的情况下显示它,您可以执行一个rtrim()
。这就完成了任务。谢谢我能问一下这个函数是如何工作的吗?为什么这个时候是scanDirectory,$sub在代码中的角色是什么?(在我的代码中,这个变量与上下文无关,我只是忘记删除它)谢谢,这很有帮助!因此,如果我对这个函数的理解是正确的,那么每当ScandDirectory发现一个新文件夹时,$folder的值就会被新文件夹擦除,对吗?我试图做的是让这个函数将找到的每个$folder与用户所在的当前曲目库进行比较,如果它匹配,它将回显一些html。这可能需要它自己的线程tho。非常感谢你的帮助,真的很有帮助@apatik:是的,它会在每次迭代中更新$folder
的值