我正在尝试使用 scandir() 将目录中的所有文件夹列出到我正在制作的菜单结构中。这是我到目前为止的代码:
$directory = "models/";
$files = scandir($directory);
echo " <a class=\"menuitem submenuheader\" href=\"#\" >models</a>
<div class=\"submenu\">\n
<ul>\n";
foreach($files as $file)
{
if(is_dir($file))
{
echo "<li><a href=\"$file.html\">$file</a></li>\n";
}
}
echo "</ul>\n</div>\n";
我认为我在代码的 if(is_dir($file) 行中遇到了问题。它在菜单 (.) 和 (..) 中列出了两个项目。
感谢您提供的任何/所有帮助!我非常感谢。
为了做一些测试,我用 for 循环替换了 foreach 循环。
$directory = "models/";
$folders = scandir($directory);
echo "<a class=\"menuitem submenuheader\" href=\"#\" >models</a>\n";
echo "<div class=\"submenu\">\n";
echo "<ul>\n";
for ($i=0; $i<count($folders); $i++) {
if ($folders[$i] != '.' && $folders[$i] != '..') {
if(is_dir($folders[$i])) {
echo "<li><a href=\"" . $folders[$i] . ".html\">" . $folders[$i] . "</a></li>\n";
}
}
}
echo "</ul>\n</div>\n";
仍然不起作用(不会在 $directory 中提取文件夹)但是,如果我更改
if(is_dir($folders[$i]))
至
if(!is_dir($folders[$i]))
它列出了 $directory 中的所有文件以及单个文件夹。不知道为什么这样做。有任何想法吗?