3

PHPでアルファベット順にソートされたディレクトリ内の最初の5つのファイルまたはディレクトリをどのようにリストしますか?

4

3 に答える 3

21

使用scandir()

array_slice(array_filter(scandir('/path/to/dir/'), 'is_file'), 0, 5);

array_filter()関数コールバックと一緒に使用すると、ループを記述せずにファイルを処理するだけで済み、ディレクトリであるis_file()ため、気にする必要もありません...


または、glob() -を使用すると、次のようなファイル名とは一致しません.htaccess

array_slice(glob('/path/to/dir/*.*'), 0, 5);

またはglob()+array_filter()を使用します-これは次のようなファイル名と一致.htaccessします:

array_slice(array_filter(glob('/path/to/dir/*'), 'is_file'), 0, 5);
于 2010-01-21T23:14:30.617 に答える
1

scandirもう少し複雑なことをしたい場合を除いて、おそらく最も簡単に使用できます。scandirディレクトリも返すので、ファイルのみを許可するようにフィルタリングします。

$items = scandir('/path/to/dir');
$files = array();
for($i = 0, $i < 5 && $i < count($items); $i++) {
    $fn = '/path/to/dir/' . $items[$i];
    if(is_file($fn)) {
        $files[] = $fn;
    }
}
于 2010-01-21T22:56:09.697 に答える
0

低レベル(iノード番号順に並べられている)を考えている場合は、 readdirが最適な関数です。

それ以外の場合、アルファベット順にしたい場合は、scandirの方が適している可能性があります。のように:

$firstfive = array_slice(scandir("."), 2, 5);

scandirによって返される最初の2つのエントリは「。」であることに注意してください。と ".."。

于 2010-01-21T22:53:11.980 に答える