我可以遍历一个目录和一个像这样的子文件夹
$directoryArray = scandir('../portalFolders/');
foreach($directoryArray as $directory){
$listString .='
<li class="closed"><span class="folder">'.$directory.'</span>';
$subDirectoryArray = scandir('../portalFolders/'.$directory);
$howManyFolders = $subDirectoryArray -> count();
if($howManyFolders > 0){
$listString .= '<ul>';
foreach($subDirectoryArray as $subDirectory){
$listString .= '<li class="closed"><span class="folder">'.$subDirectory.'</span><li>';
}
$listString .= '</ul>';
}
else{
$listString .= '</li>';
}
}
如何在不嵌套另一个foreach()
的情况下搜索/遍历子目录的所有子目录?这样,我可以通过FTP添加任意数量的文件夹/子文件夹,而不必在代码中更深入地嵌套。
答案 0 :(得分:0)
您可以考虑使用array_walk_recursive。 (来自PHP.net):
示例#1 array_walk_recursive()示例
<?php
$sweet = array('a' => 'apple', 'b' => 'banana');
$fruits = array('sweet' => $sweet, 'sour' => 'lemon');
function test_print($item, $key)
{
echo "$key holds $item\n";
}
array_walk_recursive($fruits, 'test_print');
?>
以上示例将输出: 一个苹果 b持香蕉 酸拿着柠檬
答案 1 :(得分:0)
正如其他人所暗示的,你可能会使用某种形式的递归来做到这一点。但是这里有一个例子,说明如何在不使用RecursiveDirectoryIterator的情况下完成它:
function listDirectories($dir) {
echo "<ul><li>$dir";
foreach (glob("$dir/*", GLOB_ONLYDIR) as $d) {
listDirectories($d);
}
echo "</ul>";
}
listDirectories('.');