[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Массив из каталогов
ssyler

$dirct="new";
$hdl=opendir($dirct);
while ($file = readdir($hdl)){
if (($file !=".")&&($file !="..")) {
$a[] = $file;
}
}

closedir($hdl);
rsort($a);
foreach ($a as $value);
echo $value;

Вот код :
Хочу получить массив из каталогов, а получаеться только 1..... как получить полный массив:?



Спустя 15 минут, 19 секунд (19.03.2011 - 12:18) sharki написал(а):
Рекурсией надо проходить по каждому каталогу

Спустя 4 минуты, 52 секунды (19.03.2011 - 12:23) ssyler написал(а):
Подскажи как) или ссылку на это)

Спустя 45 секунд (19.03.2011 - 12:24) ssyler написал(а):
это то что бы массив вызывал сам себя?

Спустя 3 минуты, 58 секунд (19.03.2011 - 12:28) ssyler написал(а):
Лучше конечно объяснить подробно, чтоб в далнейшем не было вопросов)

Спустя 46 секунд (19.03.2011 - 12:28) sharki написал(а):
Вот вывод всех всех каталогов и файлов, только без массива, если не сможешь пеердалать так, чтобы заносилось в массив, помогу =)
function readDirs($dirName, $sign=""){
if($dir=opendir($dirName)){
while($name=readdir($dir)){
if(($name=='.') or ($name=='..')){
continue;
}
if(is_dir($dirName."/".$name)){
echo "<br />$sign <strong>$dirName/$name</strong>";
readDirs($dirName."/".$name, $sign.$sign);
}else{
echo "<br /> $sign $dirName/$name";
$GLOBALS["size"] += filesize($name);
}
}
}

closedir($dir);
}

Спустя 54 секунды (19.03.2011 - 12:29) sharki написал(а):
Почитай про рекурсию, и для чего она нужна =)

Спустя 11 минут, 40 секунд (19.03.2011 - 12:41) ssyler написал(а):
Давай разберем твое?:

function readDirs($dirName, $sign=""){ //создаем функцию
if($dir=opendir($dirName)){ // проверка существует ли она + считываем каталог
while($name=readdir($dir)){ //счетчик + считываем директорию
if(($name=='.') or ($name=='..')){ // если существует . .. продолжаем?
continue;
}
if(is_dir($dirName."/".$name)){ //из папки считываем путь
echo "<br />$sign <strong>$dirName/$name</strong>";
readDirs($dirName."/".$name, $sign.$sign); //вызывает сама себя еще раз
}else{ // в случае неудачи
echo "<br /> $sign $dirName/$name";
$GLOBALS["size"] += filesize($name);
}
}
}

closedir($dir); // закрываем
}


Объясни что чего делает?

Спустя 6 минут, 22 секунды (19.03.2011 - 12:47) sharki написал(а):
function readDirs($dirName, $sign=""){    //создаем функцию
if($dir=opendir($dirName)){ // проверка существует ли данный каталог + считываем каталог
while($name=readdir($dir)){ //счетчик + считываем директорию
if(($name=='.') or ($name=='..')){ // если существует . .. то мы пропускаем данную итерацию, чтобы не было зацикливания каталогов, почитай про contunue
continue;
}
if(is_dir($dirName."/".$name)){ //Если это папка, то запускаем еще раз эту же функцию, чтобы считать ВСЕ файлы внутри это папки
echo "<br />$sign <strong>$dirName/$name</strong>";
readDirs($dirName."/".$name, $sign.$sign);
}else{ // если это не папка , а файл, то выводим название файла и идем дальше =)
echo "<br /> $sign $dirName/$name";
$GLOBALS["size"] += filesize($name);
}
}
}


closedir($dir); // закрываем
}


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

Спустя 5 минут, 35 секунд (19.03.2011 - 12:53) ssyler написал(а):
Щас переварю все и отвечу что получилось))

Спустя 5 минут, 22 секунды (19.03.2011 - 12:58) ssyler написал(а):
Ошибку выдает по 13 линии тоесть:

new/190320111100
new/190320111100/190320011100.txt
Warning: filesize() [function.filesize]: stat failed for 190320011100.txt in Z:\home\test1.ru\www\content\newgenerate.php on line 13

new/200320111200
new/210320111300
new/220320111400

Спустя 2 минуты, 7 секунд (19.03.2011 - 13:00) ssyler написал(а):
$GLOBALS["size"] += @filesize($name); а так плохо делать?)

Спустя 2 минуты, 35 секунд (19.03.2011 - 13:03) sharki написал(а):
удали
Цитата
$GLOBALS["size"] += filesize($name);


Запусти глянь.
readDirs(".");
function readDirs($dirName, $sign=""){
if($dir=opendir($dirName)){
while($name=readdir($dir)){
if(($name=='.') or ($name=='..')){
continue;
}
if(is_dir($dirName."/".$name)){
echo "<br />$sign <strong>$dirName/$name</strong>";
readDirs($dirName."/".$name, $sign.$sign);
}else{
echo "<br /> $sign $dirName/$name";
}
}
}

closedir($dir);
}


Спустя 3 минуты, 20 секунд (19.03.2011 - 13:06) ssyler написал(а):
все хорошо работает)В принцепе все понятно кроме одного: Зачем нужна переменая $sign=""?

Спустя 3 минуты, 30 секунд (19.03.2011 - 13:10) sharki написал(а):
Туда передаешь readDirs(".","-"); так сказать отступы, запсути с любым парметром, и увидешь древовидный список

Спустя 6 минут, 20 секунд (19.03.2011 - 13:16) ssyler написал(а):
А да суперски, даже и не подумал про это)) такс.... как мне всё это запихнуть в массив? еще + поделить имена коталогов по 2 символа в виде даты..? хочу сделать списки новостей которые выводились...

Спустя 55 секунд (19.03.2011 - 13:17) sharki написал(а):
омг biggrin.gif

Новости же по идее в БД должны храниться, с датами и т.п

Там будут n-ые уровни массива, как ты будешь потом разбирать его?)

Спустя 6 минут, 20 секунд (19.03.2011 - 13:23) ssyler написал(а):
Надо было с этого начинать)) как через бд сделать это?)

Спустя 3 минуты, 28 секунд (19.03.2011 - 13:27) ssyler написал(а):
какую базу надо саздать?

Спустя 53 секунды (19.03.2011 - 13:28) sharki написал(а):
эм, ну во первых тебе надо создать БД, создать таблицу типа NEWS с полями

| id | text | title | date |


Ну это самая малость...думаю тебе сначала нужно почитать про Mysql, создать какую нибудь гостевую книгу, создать маленький сайт и т.п...а то я смотрю, ты не в курсе как с этим работать.

А так чтобы ты более менее освоился в этой среде пройди курсы чтоль, чтобы втянулся...а потом книгами займешься =))
http://rutracker.org/forum/viewtopic.php?t=3432762

Спустя 8 минут, 14 секунд (19.03.2011 - 13:36) ssyler написал(а):
там видео? поставил на скачку)

Спустя 2 минуты, 47 секунд (19.03.2011 - 13:39) sharki написал(а):
Да там видеокурсы..вроде не плохие..для начинающего самое оно)

Спустя 32 секунды (19.03.2011 - 13:39) ssyler написал(а):
спасибо) буду смотерть)
Быстрый ответ:

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