PDA

Просмотр полной версии : Рекурсивно получить список вложенных директорий.


Велемир
02.06.2009, 19:58
Опять не пройти уровень(:



<?php

@set_time_limit(0);

global $fp;

$fp = fopen("log.txt","w");

function scan($bs = '') {

$dir = opendir("C:/Program Files/VertrigoServ/www/com_clickheat");

while (($s = readdir($dir)) !== false) {

if(is_dir($s) and $s != "." and $s != "..") {

fwrite($fp,$s."\r\n");

scan($bs."\".$s);

}

}

fclose($fp);

}



scan();


?>



Должна быть рекурсия...и она есть.Но почему ничего не записывается в фаил я ума не приложу).

ЗЫ: никогда подобного ранее не делал))

попугай
02.06.2009, 20:19
$dir = opendir("C:\\Program Files\\VertrigoServ\\www\\com_clickheat");

или

$dir = opendir("C:/Program Files/VertrigoServ/www/com_clickheat");

NOmeR1
02.06.2009, 20:27
имхо - подправь
function scan($bs = '') {
и пониже
$dir = opendir("C:\Program Files\VertrigoServ\www\com_clickheat\".$bs);
и пониже
scan($bs.'\'.$s);

krypt3r
02.06.2009, 21:31
Мда, кульный код в первом посте =) Файл открывается при каждом вызове функции, открывается один и тот же каталог =) Рекурсией мало пахнет

Велемир
03.06.2009, 01:40
Если использовать '',то выдаёт ошибку.Пример я частично вообще отсюда брал:

http://articles.org.ru/cfaq/index.php?qid=1917

Весь день убил на эту гребаную функцию...охренеть.

Ru}{eeZ
03.06.2009, 02:15
переменную нужно объявлять глобальной в самой функции и не нужна тут рекурсия

<?php

@set_time_limit(0);

$fp = fopen("log.txt","w");

function scan($bs = '') {

global $fp;

//$dir = opendir("C:/Program Files/VertrigoServ/www/com_clickheat");
$dir = opendir('.');

while (($s = readdir($dir)) !== false) {

if(is_dir($s) and $s != "." and $s != "..") {

fwrite($fp,$s."\r\n");

}

}

fclose($fp);

}



scan();


?>


п.с. http://forum.antichat.ru/showpost.php?p=1306831&postcount=786 там нужна рекурсия

мой вариант:


<?php
$addr = '.';
$logFile = 'log.txt';
$fp = fopen($logFile,'w');
$dir = opendir($addr);
while ($obj = readdir($dir)) {
if(is_dir($obj) && $obj != "." && $obj != "..") fputs($fp,$obj."\r\n");
}
fclose($fp);
?>

Велемир
03.06.2009, 03:12
Можно клоцать))Много пищи для размышлений будет )

Велемир
03.06.2009, 03:15
Ru}{eeZ,первый вариант не катит,ибо выдаёт листинг директорий только.

Pashkela
03.06.2009, 03:17
Вообще-то есть гугл и античат, стыдно господа

Велемир
03.06.2009, 03:18
У меня вопрос:

при использовании scan($obj) в function scan($dir = '.') подставляется $obj или остаётся '.' ?

Ru}{eeZ
03.06.2009, 03:18
Ru}{eeZ,первый вариант не катит,ибо выдаёт листинг директорий только.
эм, а что нужно?

Ru}{eeZ
03.06.2009, 03:19
У меня вопрос:

при использовании scan($obj) в function scan($dir = '.') подставляется $obj или остаётся '.' ?

$obj

Велемир
03.06.2009, 03:20
эм, а что нужно?

Да нет,второй вариант с рекурсией с выдачей листинга поддиректорий как раз то,что нужно)))Одному челу дали это при собеседовании,тык он там полдня просидел))))))))))

Ru}{eeZ
03.06.2009, 03:23
Да нет,второй вариант с рекурсией с выдачей листинга поддиректорий как раз то,что нужно)))
грызи гранит Ru}{eeZ'а ^^
Одному челу дали это при собеседовании,тык он там полдня просидел))))))))))

пускай тоже грызёт