ds_readdir_dir_list()

Рекурсивное получение списка каталогов и их потомков, в указанном пути.

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