Рекурсивное получение списка каталогов и их потомков, в указанном пути.
$dirlist = ds_readdir_dir_list($path); // array
Использование
$dirlist = ds_readdir_dir_list(ROOTPATH . '/sys/inc');
echo '<pre>';
print_r($dirlist);
echo '</pre>';
Результат выполнения
Array
(
[0] => /var/www/user/data/www/site.ru/sys/inc/functions
[1] => /var/www/user/data/www/site.ru/sys/inc/classes
[2] => /var/www/user/data/www/site.ru/sys/inc/admin
[3] => /var/www/user/data/www/site.ru/sys/inc/libs
[4] => /var/www/user/data/www/site.ru/sys/inc/libs/MP3
[5] => /var/www/user/data/www/site.ru/sys/inc/libs/MP3/Id3
[6] => /var/www/user/data/www/site.ru/sys/inc/libs/MP3/IDv2
[7] => /var/www/user/data/www/site.ru/sys/inc/libs/MP3/IDv2/Frame
[8] => /var/www/user/data/www/site.ru/sys/inc/libs/PEAR
[9] => /var/www/user/data/www/site.ru/sys/inc/libs/getid3
[10] => /var/www/user/data/www/site.ru/sys/inc/libs/verot
[11] => /var/www/user/data/www/site.ru/sys/inc/libs/verot/lang
)
Код функции
function ds_readdir_dir_list($dir, $ds_directory_recursive = array())
{
$opdirbase = opendir($dir);
while ($filebase = readdir($opdirbase)) {
if ($filebase == '..' || $filebase == '.') continue;
if (is_dir($dir . '/' . $filebase)) {
$ds_directory_recursive[] = $dir . '/' . $filebase;
$ds_directory_recursive = array_merge_recursive($ds_directory_recursive, ds_readdir_dir_list($dir . '/' . $filebase));
}
}
return $ds_directory_recursive;
}