форум вебмастероff на AlfaSpace.NET

Ubuntu и Linux |реактивный бесплатный хостинг | Киноклуб. ВСЁ БЕСПЛАТНО!
база знаний хостинга | правила форума

  Начало ° Ответить ° Статистика ° Опрос ° Регистрация ° Поиск ° FAQ °
Форум вебмастеров на AlfaSpace.NET / The Matrix Has You / Скрипт вывода папок
Автор Сообщение
maxtat
pda killer

1438
# Дата: 26 Апр 2007 06:07


Функция сканит папку, записывает в массив все папки. Потом каждую открывает и там ищет папки. Уровень вложенности не более чем папка в папке. Где-то ошибка. Результат - пустой массив.
function set_dirs($directory) 
{ 
    if ($directory == ".") { 
        $dir = opendir("."); 
        while(($file = readdir($dir))) 
    { if (is_dir("$file") && $file != "." && $file != "..") { $dirs[] = $file; } 
} closedir($dir); for($ii = 0; $ii < count($dirs); $ii++) set_dirs($dirs[$ii]); } else { $dir = opendir($directory); while(($file = readdir($dir))) { if (is_dir("$directory/$file") && $file != "." && $file != "..") { $dirs[]
= $directory."/".$file; }} closedir($dir); } } set_dirs(".");


Андрей
Алексеевич

2125
# Дата: 26 Апр 2007 07:29 ° Поправил: Андрей


Попробуй вернуть какое-нибудь значение этой функцией.
И рекурсия тут не присваивается.

madman
Участник

224
# Дата: 26 Апр 2007 09:45


maxtat, вот такое точно работает.

function viewdir($dir)
{
if (is_dir($dir) && $dir != "." && $dir != "..")
{
$dh = opendir($dir);
while(($file = readdir($dh)))
{
$path = $dir."/".$file;
if (is_dir($path) && $file != "." && $file != "..")
{
$dirs[] = $path;
# echo ($path."<br>"); - для проверки работоспособности
viewdir($path);
}
}
closedir($dh);
}
}
viewdir("./pic"); // "." - нельзя задавать в качестве аргумента.

maxtat
pda killer

1438
# Дата: 26 Апр 2007 12:20


» madman
"." - нельзя задавать в качестве аргумента.

А как же быть если скрипт находится в той же папке, где нужно считать папки?

Андрей
Алексеевич

2125
# Дата: 26 Апр 2007 13:08


Вариант без передачи массива папок по ссылке:
function set_dirs($directory) 
{ 
    $dirs = array(); 
    $dir = opendir($directory); 
    $directory = ($directory == '.') ? '' : $directory.'/'; 
    while($file = readdir($dir)) 
    { 
        if(is_dir($directory.$file) && $file != '.' && $file != '..') 
        { 
            $dirs[] = $directory.$file; 
            $dirs += set_dirs( $directory.$file ); 
        } 
    } 
    closedir($dir); 
    return (array)$dirs; 
} 
 
print_r(set_dirs('.'));



Собственно, вариант с ссылкой будет работать быстрее, но сейчас вспоминать не хочу, как правильно оформлять передачу по ссылке, сам загружен по полной.

madman
Участник

224
# Дата: 26 Апр 2007 16:28


» maxtat
А как же быть если скрипт находится в той же папке, где нужно считать папки?

Для этого там нуна добавить пару иффов. Ну ещё бы немешало проверку на коректность агемента добавить. Я как тока протрезвею ... напишу нормальный вариант.

Да. Там ещё нужно подумать в какой форме будет результат возращатся через
return

/
maxtat, ты б поконкретней написал какОй масив в результете хош получить.

maxtat
pda killer

1438
# Дата: 27 Апр 2007 02:40 ° Поправил: maxtat


madman
Думаю скрипт Андрея Алексеевича пойдет. щас попробую.

Спустя 5 минут.
Работает, я еще добавил && $file != 'cgi-bin'

Ваш ответ

Quote  Bold Style  Italic Style  Underlined Style  URL Link  Email Link  Script AutoTab  Preformatted Text  Отменить *Что это?
... Запретить смайлы


Перед отправкой "нелатинского" текста проверьте кодировку броузера!
 » Логин  » Пароль 
 
Powered by miniBB forum software © 2001-2008
Powered by miniBB-gzipper. Original size:26767, gzipped size:8498

Mp3 Download || Webs Studio™ || Song's Lyrics
eXTReMe Tracker Rambler's Top100 Рейтинг@Mail.ru Форум ТвойWeb [Valid RSS]