我希望我的脚本能够递归扫描目录,
$files = scandir('/dir');
foreach($files as $file){
if(is_dir($file)){
echo '<li><label class="tree-toggler nav-header"><i class="fa fa-folder-o"></i>'.$file.'</label>';
$subfiles = scandir($rooturl.'/'.$file);
foreach($subfiles as $subfile){
// and so on and on and on
}
echo '<li>';
} else {
echo $file.'<br />';
}
}
我希望以循环的方式处理这个问题,对于每个由scandir找到的目录,在该目录中找到的文件夹上再运行一次scandir,所以dir'A'包含dir1/2/3,现在应该scandir(1), scandir(2), scandir(3),对于找到的每个dir都要这样做。
我如何能够轻松实现这一点,而不必在每个foreach中重复复制粘贴代码?
编辑:由于答案几乎与我已经尝试过的答案相同,所以我将稍微更新一下问题。
使用此脚本需要创建一个treeview列表。 当前发布的脚本会输出以下内容:
/images/dir1/file1.png
/images/dir1/file2.png
/images/dir1/file3.png
/images/anotherfile.php
/data/uploads/avatar.jpg
/data/config.php
index.php
我需要的实际上是:
<li><label>images</label>
<ul>
<li><label>dir1</label>
<ul>
<li>file1.png</li>
<li>file2.png</li>
<li>file3.png</li>
</ul>
</li>
<li>anotherfile.php</li>
</ul>
</li>
<li><label>data</label>
<ul>
<li><label>uploads</label>
<ul>
<li>avatar.jpg</li>
</ul>
</li>
<li>config.php</li>
</ul>
</li>
<li>index.php</li>
等等,感谢已经发布的答案!
recursiveIterator
类系列 - http://php.net/manual/en/class.recursivedirectoryiterator.php - Professor Abronsius