mcnet
Guest
Оптимизация алгоритма
Для получения списка файлов и папок используется следующая функция, которая вызывает сама себя(рекурсия) для получения списка поддиректорий:
Допустим, есть 4 поддиректории в директории files: dir1, dir2, dir3, dir4
Вот, что содержит переменная $array['dirs'] после отработки скрипта:
Array ( [dir1] => files/dir1 )
Array ( [dir1] => files/dir1 [dir2] => files/dir2 )
Array ( [dir1] => files/dir1 [dir2] => files/dir2 [dir3] => files/dir3 )
Array ( [dir1] => files/dir1 [dir2] => files/dir2 [dir3] => files/dir3 [dir4] => files/dir4 )
Здаётся мне, что первые три массива - лишние.
Как от них можно избавится на стадии формирования данного массива?
Для получения списка файлов и папок используется следующая функция, которая вызывает сама себя(рекурсия) для получения списка поддиректорий:
PHP:
function recursive_listdir($base) {
static $filelist = array();
static $dirlist = array();
if(is_dir($base)) {
$dh = opendir($base);
while (false !== ($dir = readdir($dh))) {
if (is_dir($base .'/'. $dir) && $dir !== '.' && $dir !== '..') {
$subbase = $base.'/'.$dir;
$dirlist[$dir] = $subbase;
/*[here]*/ $subdirlist = recursive_listdir($subbase);
} elseif (is_file($base .'/'. $dir) && $dir !== '.' && $dir !== '..') {
$filelist[] = $base .'/'. $dir;
}
}
closedir($dh);
}
$array['dirs'] = $dirlist;
$array['files'] = $filelist;
return $array; }
Вот, что содержит переменная $array['dirs'] после отработки скрипта:
Array ( [dir1] => files/dir1 )
Array ( [dir1] => files/dir1 [dir2] => files/dir2 )
Array ( [dir1] => files/dir1 [dir2] => files/dir2 [dir3] => files/dir3 )
Array ( [dir1] => files/dir1 [dir2] => files/dir2 [dir3] => files/dir3 [dir4] => files/dir4 )
Здаётся мне, что первые три массива - лишние.
Как от них можно избавится на стадии формирования данного массива?