我使用此代码获取了一个剧目的每个文件夹/子文件夹的列表:
$path = realpath($userdir);
foreach (new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path)) as $filename)
{
echo "$filename\n";
}
然而,它会显示如下内容,添加点或双点并显示文件夹两次:
C:\瓦帕\ WWW \ GG \ ftp的\库\用户\先生
C:\瓦帕\ WWW \ GG \ ftp的\库\用户\ ..先生
C:\瓦帕\ WWW \ GG \ ftp的\库\用户\先生\ apatik
C:\瓦帕\ WWW \ GG \ ftp的\库\用户\先生\ apatik ..
C:\瓦帕\ WWW \ GG \ ftp的\库\用户\先生\ vvxcv
C:\瓦帕\ WWW \ GG \ ftp的\库\用户\先生\ vvxcv ..
C:\瓦帕\ WWW \ GG \ ftp的\库\用户\先生\ vvxcv \ vcxvcx
C:\瓦帕\ WWW \ GG \ ftp的\库\用户\先生\ vvxcv \ vcxvcx ..
而不是像这样清洁的东西:
C:\瓦帕\ WWW \ GG \ ftp的\库\用户\先生
C:\瓦帕\ WWW \ GG \ ftp的\库\用户\先生\ apatik
C:\瓦帕\ WWW \ GG \ ftp的\库\用户\先生\ vvxcv
C:\瓦帕\ WWW \ GG \ ftp的\库\用户\先生\ vvxcv \ vcxvcx
有办法吗?我之前使用的是函数glob
glob($sub . '/*' , GLOB_ONLYDIR);
正确显示文件夹,但我无法递归显示子文件夹。
由于
答案 0 :(得分:2)
你需要这样的东西
set_time_limit(0);
function scanDirectory($sub = ''){
$folders = glob($sub . '/*' , GLOB_ONLYDIR);
foreach($folders as $folder){
echo "$folder<br />";
scanDirectory($folder);
}
}
scanDirectory();
这将列出当前驱动器上的所有文件夹
修改强>
$folders = glob($sub . '/*' , GLOB_ONLYDIR);
将获取指定目录中的所有文件夹。
foreach($folders as $folder)
将遍历folders
数组。
$sub
将是将要探索的文件夹名称。
所以,这些是文件夹
A B C
$folders
会有$folders['A', 'B', 'C']
并在循环中,每个A B and C
将作为$sub
传递,以检查其中是否包含更多folders
。