PHP 计算 scandir 循环中的子目录级别

PHP count sub-directory levels in scandir loop

我得到了以下扫描目录并以下列格式输出文件和子文件夹的代码:

file1.php
folder1
   file2.php
   folder2
       file3.php
file4.php

对于我的超链接,我需要引用具有级别数的链接。例如:file1.php、folder1 和 file4.php 都是第 1 级。file2.php、folder2 是第 2 级,file3.php 是第 3 级。

关于如何使用循环计数器实现此目的的任何建议?

$directory = $_SERVER["DOCUMENT_ROOT"]."/files/";

function folderFleList($dir, $menu_class){
    $ffs = scandir($dir);
    echo "<ul class=\"".$menu_class."\">\n";
    foreach($ffs as $ff){
        if($ff != '.' && $ff != '..'){
            echo '<li class="menu-item"><a href="#" class="menu-link-level-1">'.$ff;
            if(is_dir($dir.'/'.$ff)) folderFleList($dir.'/'.$ff, "menu-sublist");
            echo '</a></li>';
        }
    }
    echo "</ul>\n";
}

folderFleList($directory, "menu-list");

只需为您的函数添加一个额外的参数:

function folderFleList($dir, $menu_class, $level = 1){
    $ffs = scandir($dir);
    echo "<ul class=\"".$menu_class."\">\n";
    foreach($ffs as $ff){
        if($ff != '.' && $ff != '..'){
            echo '<li class="menu-item">
                     <a href="#" class="menu-link-level-' . $level . '">'.$ff;
            if(is_dir($dir.'/'.$ff))
                folderFleList($dir.'/'.$ff, "menu-sublist", $level+1);
            echo '</a></li>';
        }
    }
    echo "</ul>\n";
}

folderFleList($directory, "menu-list");