Article Categories
- All Categories
-
Data Structure
-
Networking
-
RDBMS
-
Operating System
-
Java
-
MS Excel
-
iOS
-
HTML
-
CSS
-
Android
-
Python
-
C Programming
-
C++
-
C#
-
MongoDB
-
MySQL
-
Javascript
-
PHP
-
Economics & Finance
Selected Reading
Get all subdirectories of a given directory in PHP
To get the subdirectories present in a directory, PHP provides several methods. The glob() function with appropriate filters is the most common approach.
Using glob() with is_dir Filter
This method gets all items and filters them to return only directories ?
<?php
$all_sub_dirs = array_filter(glob('*'), 'is_dir');
print_r($all_sub_dirs);
?>
Array (
[0] => documents
[1] => images
[2] => scripts
[3] => templates
)
Using glob() with GLOB_ONLYDIR Flag
This is the most efficient method as it directly returns only directories ?
<?php
$directory_path = '/path/to/directory';
$all_dirs = glob($directory_path . '/*', GLOB_ONLYDIR);
print_r($all_dirs);
?>
Array (
[0] => /path/to/directory/subfolder1
[1] => /path/to/directory/subfolder2
[2] => /path/to/directory/subfolder3
)
Using scandir() with is_dir Check
Alternative approach using scandir() to get all directory contents and filter directories ?
<?php
$directory = '.';
$items = scandir($directory);
$subdirs = array();
foreach ($items as $item) {
if ($item != '.' && $item != '..' && is_dir($directory . '/' . $item)) {
$subdirs[] = $item;
}
}
print_r($subdirs);
?>
Array (
[0] => assets
[1] => config
[2] => uploads
)
Comparison
| Method | Performance | Flexibility | Best Use Case |
|---|---|---|---|
glob() with is_dir |
Good | Medium | Simple directory listing |
glob() with GLOB_ONLYDIR |
Best | Low | Fast directory-only retrieval |
scandir() with is_dir |
Moderate | High | Custom filtering requirements |
Conclusion
Use glob() with GLOB_ONLYDIR for the fastest directory retrieval. For more complex filtering, combine scandir() with is_dir() checks.
Advertisements
