我一直在尝试打印列表中的文件,同时获取文件,文件夹和子文件夹。 我可以解决所有问题,但我想先显示文件夹。 有没有办法做到这一点?
到目前为止我的代码:
function getFiles($path) {
foreach (new DirectoryIterator($path) as $file) {
if($file->isDot()) continue;
if($file->isDir())
echo "<li class='folder'>\n";
else
echo "<li>\n";
echo "<a href='#'>" . $file->getFilename() . "</a>\n";
if ($file->isDir()) {
echo "<ul>\n";
getFiles($file->getPathname());
echo "</ul>\n";
}
echo "</li>\n";
}
}
希望你能帮助我!
答案 0 :(得分:2)
而不是echo
将它们添加到临时数组中。我将创建一个数组名称$directories
和一个名为$files
的数组,然后您可以遍历这两个数组并echo
。
这样的事情:
function getFiles($path) {
$directories = array();
$files = array();
foreach (new DirectoryIterator($path) as $file) {
if ($file->isDot())
continue;
if ($file->isDir())
$directories[] = $file;
else
$files[] = $file;
}
foreach($directories as $file) {
echo "<li class='folder'>\n";
echo "<a href='#'>" . $file->getFilename() . "</a>\n";
echo "<ul>\n";
getFiles($file->getPathname());
echo "</ul>\n";
echo "</li>\n";
}
foreach($files as $file) {
echo "<li>\n";
echo "<a href='#'>" . $file->getFilename() . "</a>\n";
echo "</li>\n";
}
}