Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Дерево каталогов
Форумы портала PHP.SU » » Если скрипт не работает » Дерево каталогов

Страниц (1): [1]
 

1. dimcrash - 05 Августа, 2011 - 10:56:26 - перейти к сообщению
Хочу сделать дерево каталогов.
Пока вот такой вот скрипт:
PHP:
скопировать код в буфер обмена
  1. $path = "J:/";
  2. $ndir = $path;
  3. $olddir = $path;
  4. $space = NULL;
  5.  
  6. function filestree() {
  7. GLOBAL $path;
  8. GLOBAL $ndir;
  9. GLOBAL $olddir;
  10. GLOBAL $space;
  11.  
  12. $files = scandir($path);
  13.  
  14. foreach($files as $item) {
  15.  
  16. if($item != "." and $item != "..") {
  17. echo $space . $item . "<br />";
  18.  
  19. if(is_dir("/" . $item)) {
  20. $space .= "&nbsp;&nbsp;&nbsp;";
  21. $ndir = $path . "/" . $item;
  22. $olddir = $path;
  23. $path = $ndir;
  24. filestree();
  25. $path = $olddir;
  26. $space = NULL;
  27. }
  28.  
  29.  
  30. }
  31.  
  32. }
  33.  
  34. }
  35.  
  36. filestree();


Были разные варианты, но все сходилось на одном: либо отображает файлы и папки всего на 1 уровеь ниже, либо выводит ошибку (он добавляет в адрес два каталога на одном уровне)

Помогите решить задачу, пожалуйста.
2. OrmaJever - 05 Августа, 2011 - 11:41:13 - перейти к сообщению
я вот для себя писал такую функцию.
PHP:
скопировать код в буфер обмена
  1. function scan($dir)
  2. {
  3.         $d = array();
  4.         $arr = opendir($dir);
  5.  
  6.         while($v = readdir($arr))
  7.         {
  8.                 if($v == '.' or $v == '..') continue;
  9.                 if(!is_dir($v)) $d[] = $v;
  10.                 if(is_dir($v) === true) $d[$v] = scan($dir.DIRECTORY_SEPARATOR.$v);
  11.    }
  12.  
  13.         return $d;
  14. }
  15. print_r(scann('x:\\www\\'));
3. dimcrash - 05 Августа, 2011 - 12:10:34 - перейти к сообщению
И все равно ниже чем на 1 ур у меня не выводит Нет
4. OrmaJever - 05 Августа, 2011 - 12:30:12 - перейти к сообщению
значит не верно указываете папку
5. illy - 05 Августа, 2011 - 12:52:16 - перейти к сообщению
print_r(scann('x:\\www\\'));

print_r(scan('x:\\www\\'));
6. dimcrash - 08 Августа, 2011 - 06:57:30 - перейти к сообщению
Каталог указываю правильно, он сканирует, но вместо, например, этого:
J:/
home
192.168.0.102
www

Он выдает лишь:
J:/
home
192.168.0.102

И не сканирует дальше
7. illy - 08 Августа, 2011 - 09:49:13 - перейти к сообщению
ну да он сканирует только одну папку. а чтобы ещё и подпапки-это надо чтоб опять выполнилась функция scan но уже для подпапки

 

Powered by ExBB FM 1.0 RC1