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)行に問題があると思います。メニュー(。)と(..)に2つの項目がリストされています。
提供されているすべてのヘルプに感謝します!とても感謝しています。
テストを行うために、foreachループをforループに置き換えました。
$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";
それでも機能しません($ディレクトリ内のフォルダをプルしません)しかし、
if(is_dir($folders[$i]))
に
if(!is_dir($folders[$i]))
$ディレクトリ内のすべてのファイルと単一のフォルダが一覧表示されます。なぜこれを行っているのかわからない。何か案は?