Оптимизация алгоритма

mcnet

Guest
Оптимизация алгоритма

Для получения списка файлов и папок используется следующая функция, которая вызывает сама себя(рекурсия) для получения списка поддиректорий:
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;  	}
Допустим, есть 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 )

Здаётся мне, что первые три массива - лишние.
Как от них можно избавится на стадии формирования данного массива?
 

moxnatiy

Новичок
не понял вопроса

у меня содержит тока последний массив
Array ( [dir1] => files/dir1 [dir2] => files/dir2 [dir3] => files/dir3 [dir4] => files/dir4 )
 
Сверху