【问题标题】:recursive directory scanning with different sorting具有不同排序的递归目录扫描
【发布时间】:2014-10-13 19:59:47
【问题描述】:

我正在使用此脚本扫描我的目录。

function listFolderFiles($dir) {
    $ffs = scandir($dir, SCANDIR_SORT_DESCENDING);
    echo '<ul>';
    foreach($ffs as $ff) {
        if($ff != '.' && $ff != '..') {
            if(is_dir($dir.'/'.$ff)) {
                echo '<li>'.$ff;
                listFolderFiles($dir.'/'.$ff);
            } else {                                    
                echo '<li><a href="'.$dir.'/'.$ff.'" target="_blank">'.$ff.'</a>';
            }
            echo '</li>';
            }
        }
        echo '</ul>';
    }

    listFolderFiles('upload/files/');

目录结构始终相同:首先,您将年份作为目录(2013、2014,...),在这些目录中,您会获得一堆文档。

我想从最近一年开始列出(所以降序),但我希望文档升序。

是否可以更改此代码,以便仅对最高级别进行降序排序?

【问题讨论】:

    标签: php list sorting recursion


    【解决方案1】:

    您可以将排序模式传递给函数。

    function listFolderFiles($dir, $sort = SCANDIR_SORT_DESCENDING) {
        $ffs = scandir($dir, $sort);
        echo '<ul>'; 
        foreach($ffs as $ff) {
            if($ff != '.' && $ff != '..') {
                if(is_dir($dir.'/'.$ff)) { 
                    echo '<li>'.$ff; 
                    listFolderFiles($dir.'/'.$ff, SCANDIR_SORT_ASCENDING);
                } else {
                    echo '<li><a href="'.$dir.'/'.$ff.'" target="_blank">'.$ff.'</a>';
                } echo '</li>';
            }
        } echo '</ul>';
    }
    

    默认值可以像现在一样调用函数。

    【讨论】:

    • 哦,确实...我想在上面放一个计数器,但是当再次调用该函数时,它的值总是设置为默认值...
    猜你喜欢
    • 2012-11-30
    • 1970-01-01
    • 1970-01-01
    • 2021-06-16
    • 1970-01-01
    • 2014-09-30
    • 1970-01-01
    • 2011-05-05
    • 2014-10-01
    相关资源
    最近更新 更多