2009-07-02 15 views
5

私たちはそれらを表示するための特定の順序で項目をソートする簡単な方法があることが後に

$files = new DirectoryIterator() 

でPHPでディレクトリ内のファイルを入手できますか?ありがとう。

+0

@動力能量 - あなたは中国語ですか? –

+2

[salathe/spl-examples - ソートイテレータ](https://github.com/salathe/spl-examples/wiki/Sorting-Iterators) – hakre

答えて

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

編集:

あなたは、配列の値のファイルの出力に必要な情報のすべてを配置する場合、あなたは、単に(内破することができます)の代わりに、一度データをループのその後の配列、再び。

-4
$files = new DirectoryIterator($path); 
$i = 0; 
$paths = array(); 
while($files->valid()) { 
    $paths[$i++] = $files->getFileName(); 
    $files->next(); 
} 
sort($paths) 

あなたが探しているものであってもよいし、いつでも、もちろんその後、あなたの好みに応じてパスをソートするソート関数を適用することができます。

関連する問題