0

我发现这段代码(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() 的正确用途吗?非常感谢。

4

1 回答 1

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>";
    }
于 2013-08-15T05:39:03.570 回答