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

如果您正在考虑低级别(按 inode 编号排序),那么readdir就是适合您的功能。

否则,如果您希望它们按字母顺序排列,那么scandir可能是更好的选择。如:

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

请注意,返回的前两个条目scandir是“。” 和 ”..”。

于 2010-01-21T22:53:11.980 回答