How do I find the first 5 files in a directory with PHP?

佐手、 提交于 2020-01-02 07:21:11

问题


How would I list the first 5 files or directories in directory sorted alphabetically with PHP?


回答1:


Using scandir():

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

The array_filter() together with the is_file() function callback makes sure we just process files without having to write a loop, we don't even have to care about . and .. as they are directories.


Or using glob() - it won't match filenames like .htaccess:

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

Or using glob() + array_filter() - this one will match filenames like .htaccess:

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



回答2:


It's probably most simple to use scandir, unless you want to do something a bit more complex. scandir returns directories as well, so we'll filter to only allow files:

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



回答3:


If you're thinking low level (ordered by inode number), then readdir is the function for you.

Otherwise, if you want them alphabetical, then scandir might be a better option. As in:

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

Note that the first two entries returned by scandir are "." and "..".



来源:https://stackoverflow.com/questions/2113565/how-do-i-find-the-first-5-files-in-a-directory-with-php

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!