How do I find the first 5 files in a directory with PHP?
Question
How would I list the first 5 files or directories in directory sorted alphabetically with PHP?
Solution
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);
OTHER TIPS
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;
}
}
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow