[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Ошибка в выводе дерева
DmitryOpalev
Есть папка /pages, которая, собственно и имеет все страницы в виде каталогов.
Путь до страницы может быть бесконечно большой.
Ну и, собственно, нужно определить все эти страницы.
У меня есть метод:
function showDir($dir,$deep) {
$catalog = scandir($dir);
$catalog = array_diff($catalog, array('.','..'));
if($deep=="0") {$catalog = array_diff($catalog, array('admin'));}
if($deep=="0") {$i=3;} else {$i=2;}
for($i; $i<=count($catalog)+1; $i++) {
$newdir = $dir."/".$catalog[$i];
if(is_dir($newdir)) {
var_dump($catalog);
echo $newdir." - каталог!<br><br>";
$deep++;
$this->showDir($newdir,$deep);
}
}
}

опишу его:
В начале мы получаем абсолютный путь до папки pages, deep=0
В переменной $catalog хранится содержимое текущей директории.
		$catalog = array_diff($catalog, array('.','..'));
if($deep=="0") {$catalog = array_diff($catalog, array('admin'));}

Убираем ненужные элементы. Если глубина больше 0, то, логично, там уже нет админовской папки, либо это какая-то другая папка.
		if($deep=="0") {$i=3;} else {$i=2;}

В зависимости от того, сколько элементов в самом начале мы убрали, получаем индекс самого первого элемента.
Большой тонкостей не остается, вроде все понятно.
Теперь если в цикле я напишу $i<=count($catalog) без +1, то потеряются 2 элемента. Если напишу +1, всреавно не хватает еще одного элемента (в частости - страницы rules), массивы - содержимое $catalog:
array(6) { [3]=> string(6) "errors" [4]=> string(5) "index" [5]=> string(5) "login" [6]=> string(6) "logout" [7]=> string(4) "news" [8]=> string(5) "rules" } C:/WebServers/www/Garant2/public/../engine/pages/errors - каталог!

array(1) { [2]=> string(3) "404" } C:/WebServers/www/Garant2/public/../engine/pages/errors/404 - каталог!

array(6) { [3]=> string(6) "errors" [4]=> string(5) "index" [5]=> string(5) "login" [6]=> string(6) "logout" [7]=> string(4) "news" [8]=> string(5) "rules" } C:/WebServers/www/Garant2/public/../engine/pages/index - каталог!

array(6) { [3]=> string(6) "errors" [4]=> string(5) "index" [5]=> string(5) "login" [6]=> string(6) "logout" [7]=> string(4) "news" [8]=> string(5) "rules" } C:/WebServers/www/Garant2/public/../engine/pages/login - каталог!

array(6) { [3]=> string(6) "errors" [4]=> string(5) "index" [5]=> string(5) "login" [6]=> string(6) "logout" [7]=> string(4) "news" [8]=> string(5) "rules" } C:/WebServers/www/Garant2/public/../engine/pages/logout - каталог!

array(6) { [3]=> string(6) "errors" [4]=> string(5) "index" [5]=> string(5) "login" [6]=> string(6) "logout" [7]=> string(4) "news" [8]=> string(5) "rules" } C:/WebServers/www/Garant2/public/../engine/pages/news - каталог!

Может у меня в логике что-то не так? Или в подходе? Укажите на ошибку.

_____________
Курс валют
Быстрый ответ:

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