具有不同排序的递归目录扫描

时间:2014-08-20 12:45:10

标签: php list sorting recursion

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

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/');

目录structury总是一样的:首先你把年份当作目录(2013,2014,...),然后在那些目录中得到一堆文件。

我想以最近一年开始上市(如此下降),但我希望文件升序。

是否可以更改此代码,以便只将最高级别降序排序?

1 个答案:

答案 0 :(得分:2)

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

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>';
}

默认值可以像您当前一样调用该函数。