5

We can get the files in a directory in PHP by

$files = new DirectoryIterator() 

after that is there an easy way to sort the items in a particular order for displaying them? thanks.

4

2 に答える 2

9

イテレータ内でデータをソートする方法があるようには見えません。

表示データを中間配列に配置し、並べ替えたい値のキーを指定して、配列で ksort() を呼び出すことができます。ただし、これにはデータに対して 2 つのパスが必要です。

$path = ".";
$files = new DirectoryIterator($path);
$files_array = array();

while($files->valid()) {
        // sort key, ie. modified timestamp
        $key = $files->getMTime();
        $data = $files->getFilename();
        $files_array[$key] = $data;
        $files->next();
}
ksort($files_array);
foreach($files_array as $key => $file){
    print $key . " => " . $file . "\n";
}

編集:

ファイルに出力したいすべての情報を配列値に配置すると、データをもう一度ループする代わりに、後で配列を単純に implode() することができます。

于 2009-07-02T22:20:17.003 に答える
-4
$files = new DirectoryIterator($path);
$i = 0;
$paths = array();
while($files->valid()) {
    $paths[$i++] = $files->getFileName();
    $files->next();
}
sort($paths)

あなたが探しているものかもしれません。もちろん、いつでもソート機能を適用して、その後の好みに応じてパスをソートできます。

于 2009-07-02T22:23:59.210 に答える