<?php
echo '<ul class="DirView"><li><a href="#">Recently Used<span>28</span></a></li>';
$path = "../Desktop/";
$dir = new DirectoryIterator($path);
foreach ($dir as $fileinfo) {
if ($fileinfo->isDir() && !$fileinfo->isDot()) {
$subPath = $path.$fileinfo->getFilename();
$subDir = new DirectoryIterator($subPath);
echo '<li><a href="#">'.$fileinfo->getFilename().'<span>28</span></a><ul>';
foreach ($subDir as $subPath) {
if ($fileinfo->isDir() && !$fileinfo->isDot()) {
echo '<li><a href="#">'.$fileinfo->getFilename().'<span>18</span></a><li>';
}
}
echo '</ul></li>';
}
}
echo '</ul>';
?>
我在while循环中的while循环没有显示子文件夹。
<ul class="DirView">
<li><a href="#" class="">Recently Used<span>28</span></a>
</li>
<li><a href="#" class="active">CSS<span>28</span></a>
<ul style="display: block;">
<li><a href="#">CSS<span>18</span></a>
</li>
<li></li>
<li><a href="#">CSS<span>18</span></a>
</li>
<li></li>
<li><a href="#">CSS<span>18</span></a>
</li>
<li></li>
<li><a href="#">CSS<span>18</span></a>
</li>
<li></li>
</ul>
</li>
<li><a href="#" class="">JS<span>28</span></a>
<ul style="display: none;">
<li><a href="#">JS<span>18</span></a>
</li>
<li></li>
<li><a href="#">JS<span>18</span></a>
</li>
<li></li>
<li><a href="#">JS<span>18</span></a>
</li>
<li></li>
<li><a href="#">JS<span>18</span></a>
</li>
<li></li>
</ul>
</li>
<li><a href="#" class="">IMG<span>28</span></a>
<ul style="display: none;">
<li><a href="#">IMG<span>18</span></a>
</li>
<li></li>
<li><a href="#">IMG<span>18</span></a>
</li>
<li></li>
<li><a href="#">IMG<span>18</span></a>
</li>
<li></li>
<li><a href="#">IMG<span>18</span></a>
</li>
<li></li>
<li><a href="#">IMG<span>18</span></a>
</li>
<li></li>
<li><a href="#">IMG<span>18</span></a>
</li>
<li></li>
<li><a href="#">IMG<span>18</span></a>
</li>
<li></li>
<li><a href="#">IMG<span>18</span></a>
</li>
<li></li>
<li><a href="#">IMG<span>18</span></a>
</li>
<li></li>
<li><a href="#">IMG<span>18</span></a>
</li>
<li></li>
<li><a href="#">IMG<span>18</span></a>
</li>
<li></li>
<li><a href="#">IMG<span>18</span></a>
</li>
<li></li>
<li><a href="#">IMG<span>18</span></a>
</li>
<li></li>
<li><a href="#">IMG<span>18</span></a>
</li>
<li></li>
<li><a href="#">IMG<span>18</span></a>
</li>
<li></li>
<li><a href="#">IMG<span>18</span></a>
</li>
<li></li>
<li><a href="#">IMG<span>18</span></a>
</li>
<li></li>
<li><a href="#">IMG<span>18</span></a>
</li>
<li></li>
<li><a href="#">IMG<span>18</span></a>
</li>
<li></li>
<li><a href="#">IMG<span>18</span></a>
</li>
<li></li>
<li><a href="#">IMG<span>18</span></a>
</li>
<li></li>
<li><a href="#">IMG<span>18</span></a>
</li>
<li></li>
<li><a href="#">IMG<span>18</span></a>
</li>
<li></li>
<li><a href="#">IMG<span>18</span></a>
</li>
<li></li>
<li><a href="#">IMG<span>18</span></a>
</li>
<li></li>
<li><a href="#">IMG<span>18</span></a>
</li>
<li></li>
<li><a href="#">IMG<span>18</span></a>
</li>
<li></li>
<li><a href="#">IMG<span>18</span></a>
</li>
<li></li>
<li><a href="#">IMG<span>18</span></a>
</li>
<li></li>
<li><a href="#">IMG<span>18</span></a>
</li>
<li></li>
<li><a href="#">IMG<span>18</span></a>
</li>
<li></li>
<li><a href="#">IMG<span>18</span></a>
</li>
<li></li>
<li><a href="#">IMG<span>18</span></a>
</li>
<li></li>
<li><a href="#">IMG<span>18</span></a>
</li>
<li></li>
<li><a href="#">IMG<span>18</span></a>
</li>
<li></li>
<li><a href="#">IMG<span>18</span></a>
</li>
<li></li>
<li><a href="#">IMG<span>18</span></a>
</li>
<li></li>
</ul>
</li>
</ul>
这看起来完全搞砸我知道但如果你根本不尝试就不会到达任何地方!我之前的工作版本刚刚获得了第一级文件夹;
<?php
echo '<ul class="DirView">';
$path = "../Desktop/";
$dir = new DirectoryIterator($path);
foreach ($dir as $fileinfo) {
if ($fileinfo->isDir() && !$fileinfo->isDot()) {
echo '<li>'.$fileinfo->getFilename().'</li>';
}
}
echo '</ul>';
?>
答案 0 :(得分:2)
不确定我是否完全100%使用此答案,但您可能在内部foreach循环中误用了变量:
您目前正在使用$fileinfo
而不是$subPath
,请尝试:
foreach ($subDir as $subPath) {
if ($subPath->isDir() && !$subPath->isDot()) {
echo '<li><a href="#">'.$subPath->getFilename().'<span>18</span></a><li>';
}
}
完整代码
<?php
echo '<ul class="DirView"><li><a href="#">Recently Used<span>28</span></a></li>';
$path = "../Desktop/";
$dir = new DirectoryIterator($path);
foreach ($dir as $fileinfo) {
if ($fileinfo->isDir() && !$fileinfo->isDot()) {
$subPath = $path.$fileinfo->getFilename();
$subDir = new DirectoryIterator($subPath);
echo '<li><a href="#">'.$fileinfo->getFilename().'<span>28</span></a><ul>';
foreach ($subDir as $subPath) {
if ($subPath->isDir() && !$subPath->isDot()) {
echo '<li><a href="#">'.$subPath->getFilename().'<span>18</span></a><li>';
}
}
echo '</ul></li>';
}
}
echo '</ul>';
?>