форум вебмастеро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; } |
| Андрей Алексеевич 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' |
|
Powered by miniBB forum software © 2001-2008
Powered by miniBB-gzipper. Original size:26767, gzipped size:8498 |