[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Определение путей ко всем вложенным каталогам
Страницы: 1, 2
exotica
Доброго. Давно не заходил, с наступившим вас, счастья, здоровья, процветания.
Есть задача, получить пути ко всем возможным каталогам начиная от корня проекта, то что вы увидите ниже это просто ужасно, но это первое что пришло в голову и дает реальный результат. Глубина вложенности равня Пяти , и по коду будет ясно почему :(
public function initAllDir($visible = 'hide'){
$sep = DIRECTORY_SEPARATOR;
$path = '.'.$sep;
$adp = array();

$level1 = scandir($path);
$level1 = array_splice($level1, 2);
for($i = 0; $i < count($level1); $i++) {
if(is_dir($level1[$i])) {
$adp[] = $path.$level1[$i].$sep;

$level2 = scandir($path.$level1[$i].$sep);
$level2 = array_splice($level2, 2);
for($k = 0; $k < count($level2); $k++) {
if(is_dir($path.$level1[$i].$sep.$level2[$k].$sep)) {
$adp[] = $path.$level1[$i].$sep.$level2[$k].$sep;

$level3 = scandir($path.$level1[$i].$sep.$level2[$k].$sep);
$level3 = array_splice($level3, 2);
for($c = 0; $c < count($level3); $c++) {
if(is_dir($path.$level1[$i].$sep.$level2[$k].$sep.$level3[$c].$sep)) {
$adp[] = $path.$level1[$i].$sep.$level2[$k].$sep.$level3[$c].$sep;

$level4 = scandir($path.$level1[$i].$sep.$level2[$k].$sep.$level3[$c].$sep);
$level4 = array_splice($level4, 2);
for($x = 0; $x < count($level4); $x++) {
if(is_dir($path.$level1[$i].$sep.$level2[$k].$sep.$level3[$c].$sep.$level4[$x].$sep)) {
$adp[] = $path.$level1[$i].$sep.$level2[$k].$sep.$level3[$c].$sep.$level4[$x].$sep;

$level5 = scandir($path.$level1[$i].$sep.$level2[$k].$sep.$level3[$c].$sep.$level4[$x].$sep);
$level5 = array_splice($level5, 2);
for($v = 0; $v < count($level5); $v++) {
if(is_dir($path.$level1[$i].$sep.$level2[$k].$sep.$level3[$c].$sep.$level4[$x].$sep.$level5[$v].$sep)) {
$adp[] = $path.$level1[$i].$sep.$level2[$k].$sep.$level3[$c].$sep.$level4[$x].$sep.$level5[$v].$sep;
}
}
}
}
}
}
}
}
}
}

if($visible == 'show'){
echo '<pre>'; print_r($adp);
}
}


Результатом выполнения этой функции является одномерный массив с путями:
Array
(
[0] => .\.idea\
[1] => .\application\
[2] => .\application\news\
[3] => .\application\services\
[4] => .\application\services\realcirculationtime\
[5] => .\application\services\realcirculationtime\application\
[6] => .\application\services\realcirculationtime\public\
[7] => .\application\services\realcirculationtime\public\template\
[8] => .\core\
[9] => .\core\class\
[10] => .\core\class\other\
)


Но епрст функция выглядит просто ужасно! Неговоря уже о том что глубина вложенности которую она увидит ограничена 5-ю... Подскажите в какую сторону копать?))

_____________
[FAQ]Регистрации пользователей, сохранение в БД
---------------------------------------------------------------------------
Выходя из ванной, вышел из нее два раза
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.