子目录中的Readdir图像和按字母顺序排序SORT?

时间:2013-08-15 05:32:23

标签: php sorting readdir

我发现这段代码(https://stackoverflow.com/a/9628457/1510766)用于显示目录和子目录中的所有图像,并且工作正常,但我试图实现php的sort()函数但不起作用:

    function ListFiles($dir) {
        if($dh = opendir($dir)) {
            $files = Array();
            $inner_files = Array();
            while($file = readdir($dh)) {
                if($file != "." && $file != ".." && $file[0] != '.') {
                    if(is_dir($dir . "/" . $file)) {
                        $inner_files = ListFiles($dir . "/" . $file);
                        if(is_array($inner_files)) $files = array_merge($files, $inner_files); 
                    } else {
                        array_push($files, $dir . "/" . $file);
                    }
                }
            }
            closedir($dh);

            // -- SORTING the FILES --
            sort($files);

            return $files;
        }
    }

    foreach (ListFiles('works/'.$service_get_var.'/') as $key=>$file){
        echo "<li><img src=\"$file\"/></li>";
    }

当我测试这个时,我看不到任何图像,是否正确用于sort()?非常感谢你。

1 个答案:

答案 0 :(得分:1)

阅读全部后排序,而不是递归步骤

function ListFiles($dir) {
        if($dh = opendir($dir)) {
            $files = Array();
            $inner_files = Array();
            while($file = readdir($dh)) {
                if($file != "." && $file != ".." && $file[0] != '.') {
                    if(is_dir($dir . "/" . $file)) {
                        $inner_files = ListFiles($dir . "/" . $file);
                        if(is_array($inner_files)) $files = array_merge($files, $inner_files); 
                    } else {
                        array_push($files, $dir . "/" . $file);
                    }
                }
            }
            closedir($dh);

            // -- SORTING the FILES --
            //sort($files);

            return $files;
        }
    }

    $list = ListFiles('works/'.$service_get_var.'/');
    sort($list);
    foreach ($list as $key=>$file){
        echo "<li><img src=\"$file\"/></li>";
    }