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 に答える