|
|
|
| Вобщем код таков:
<?php
$folder = 'name_directory';
unset($dirs);
$dir = opendir($folder);
while($line = readdir($dir))
{ if(is_dir($folder."/".$line) && $line!="." && $line!="..")
{ $dirs[] = $line; $i++; }
}
//Делаем проверку
if(!empty($dirs))
{ sort($dirs);
for ($i=0;$i<sizeof($dirs);$i++)
{ $name = $dirs[$i];
echo "<b>".$name."</b> существует<br>";
if($open_dir2 = opendir($folder.'/'.$name))
{
echo "Продолжаем читать дирректорию <b>".$name."</b><br>";
$folder2 = ''.$folder.'/'.$name.'';
unset($dirs2);
$dir2 = opendir($folder2);
while($r_dir2 = readdir($dir2))
{ if(is_dir($folder2."/".$r_dir2) && $r_dir2!="." && $r_dir2!="..")
{ $dirs2[] = $r_dir2; $i2++; }
}
if(!empty($dirs2)) {
sort($dirs2);
for ($i2=0;$i2<sizeof($dirs2);$i2++)
{
$name2 = $dirs2[$i2];
echo "Еще Продолжаем читать дирректорию <b>".$name2."</b><br>";
$folder3 = ''.$folder.'/'.$name.'/'.$name2.'';
unset($dirs3);
$dir3 = opendir($folder3);
while($r_dir3 = readdir($dir3))
{ if(is_dir($folder3."/".$r_dir3) && $r_dir3!="." && $r_dir3!="..")
{ $dirs3[] = $r_dir3; $i3++; }
}
if(!empty($dirs3)) {
sort($dirs3);
for ($i3=0;$i3<sizeof($dirs3);$i3++)
{
$name3 = $dirs3[$i3];
echo "Еще Продолжаем читать дирректорию <b>".$name3."</b><br>";
$folder4 = ''.$folder.'/'.$name.'/'.$name2.'/'.$name3.'';
unset($dirs4);
$dir4 = opendir($folder4);
while($r_dir4 = readdir($dir4))
{ if(is_dir($folder4."/".$r_dir4) && $r_dir4!="." && $r_dir4!="..")
{ $dirs4[] = $r_dir4; $i4++; }
}
if(!empty($dirs4)) {
sort($dirs4);
for ($i4=0;$i4<sizeof($dirs4);$i4++)
{
$name4 = $dirs4[$i4];
echo "Еще Продолжаем читать дирректорию <b>".$name4."</b><br>";
$folder5 = ''.$folder.'/'.$name.'/'.$name2.'/'.$name3.'/'.$name4.'';
unset($dirs5);
$dir5 = opendir($folder5);
while($r_dir5 = readdir($dir5))
{ if(is_dir($folder5."/".$r_dir5) && $r_dir5!="." && $r_dir5!="..")
{ $dirs5[] = $r_dir5; $i5++; }
}
if(!empty($dirs5)) {
sort($dirs5);
for ($i5=0;$i5<sizeof($dirs5);$i5++)
{
$name5 = $dirs5[$i5];
echo "Еще Продолжаем читать дирректорию <b>".$name5."</b><br>";
}
}
else {
print "В дирректории ".$name4." нет папок.<br>";
}
}
}
else {
print "В дирректории ".$name3." нет папок.<br>";
}
}
}
else {
print "В дирректории ".$name2." нет папок.<br>";
}
//**прочитаем субдирректории
}
}
else {
print "В дирректории ".$name." нет папок.<br>";
}
//**прочитаем субдирректории
}
else {
print "В дирректории ".$folder." нет папок.<br>";
}
}
}
else { print "[null, 'Дирректория ".$folder." пуста', 'links', 'price', 1], <br>"; }
?>
|
Выдает (у меня):
1dir существует
Продолжаем читать дирректорию 1dir
Еще Продолжаем читать дирректорию name2
Еще Продолжаем читать дирректорию name3
В дирректории name3 нет папок.
Еще Продолжаем читать дирректорию name3_p
Еще Продолжаем читать дирректорию name4
Еще Продолжаем читать дирректорию name5
2dir существует
Продолжаем читать дирректорию 2dir
Еще Продолжаем читать дирректорию name2
В дирректории name2 нет папок.
3dir существует
Продолжаем читать дирректорию 3dir
В дирректории 3dir нет папок.
|
а надо чтобы выдавал
1dir существует
Продолжаем читать дирректорию 1dir
Еще Продолжаем читать дирректорию name2
В дирректории name3 нет папок.
Еще Продолжаем читать дирректорию name3_p
Еще Продолжаем читать дирректорию name4
В дирректории name5 нет папок.
2dir существует
Продолжаем читать дирректорию 2dir
В дирректории name2 нет папок.
3dir существует
В дирректории 3dir нет папок.
|
Может, кто-нить подскажет, что Я тут неверно делаю, можно с примерами :) | |
|
|
|
|
|
|
|
для: totx
(10.08.2005 в 23:02)
| | Вообще-то достаточно сложно уловить логику изменений, а исходная цель манипуляций? | |
|
|
|
|
|
|
|
для: cheops
(11.08.2005 в 00:53)
| | Немножко урезал код, для наглядности:
<?php
$folder = 'name_dir';
unset($dirs);
$dir = opendir($folder);
while($line = readdir($dir))
{ if(is_dir($folder."/".$line) && $line!="." && $line!="..")
{ $dirs[] = $line; $i++; }
}
//Делаем проверку
if(!empty($dirs))
{ sort($dirs);
for ($i=0;$i<sizeof($dirs);$i++)
{ $name = $dirs[$i];
//Делаем проверку
$r_dir_2 = readdir(opendir($folder.'/'.$name));
if(!empty($r_dir_2))
{
echo "Т.к. дирректория <b>".$name."</b> есть, проверим нет ли в ней папок ?<br>";
$folder2 = ''.$folder.'/'.$name.'';
unset($dirs2);
$dir2 = opendir($folder2);
while($r_dir2 = readdir($dir2))
{ if(is_dir($folder2."/".$r_dir2) && $r_dir2!="." && $r_dir2!="..")
{ $dirs2[] = $r_dir2; $i2++; }
}
sort($dirs2);
for ($i2=0;$i2<sizeof($dirs2);$i2++)
{
$name2 = $dirs2[$i2];
//Делаем проверку
$r_dir_3 = readdir(opendir($folder.'/'.$name.'/'.$name2));
if(!empty($r_dir_3)) {
echo "Т.к. дирректория <b>".$name2."</b> точно пустая (да и скрипт не может читать поддиректории), то это сообщения не должно выдаваться, а должно выдаваться <h4>else</h4></b><br>";
}
else {
print "В дирректории ".$name2." нет папок.<br>";
}
}
}
else {
print "В дирректории ".$name." нет папок.<br>";
}
}
}
else { print "Дирректория ".$folder." пуста"; }
?>
|
Вложенность каталогов такова:
name_dir
-1dir
--2dir
Так вот по идее должно выдавать:
Т.к. дирректория 1dir есть, проверим нет ли в ней папок ?
В дирректории 2dir нет папок.
|
А выдает:
Т.к. дирректория 1dir есть, проверим нет ли в ней папок ?
Т.к. дирректория 2dir точно пустая (да и скрипт не может читать поддиректории), то это сообщения не должно выдаваться, а должно выдаваться
else
|
Это я для наглядности сделал.
Если, что не ясно, я поясню. | |
|
|
|
|
|
|
|
для: cheops
(11.08.2005 в 00:53)
| | Короче Я понял, у меня не получаеться проверить прочитана ли конечная дирректори, как сделать не подскажите ??? | |
|
|
|
|
|
|
|
для: totx
(11.08.2005 в 12:47)
| | Неужели никто не знает ? | |
|
|
|
|
|
|
|
для: totx
(11.08.2005 в 12:47)
| | Конечная это какая 2dir? | |
|
|
|
|
|
|
|
для: cheops
(11.08.2005 в 19:06)
| | Конечная это там где делаем проверку if(!empty($dirs)) дальше if(!empty($r_dir_2)) и еще дальше if(!empty($r_dir_3)) | |
|
|
|
|
|
|
|
для: totx
(11.08.2005 в 19:35)
| | Че-то опять тишина, люди, здесь кто-нить кроме cheops-a разбирается в PHP ? | |
|
|
|
|
|
|
|
для: totx
(12.08.2005 в 10:04)
| | Вероятно тема не вызывает ажиотажа, так как очень сложно разобраться в коде... как-то очень сложно организован - требуется длительное время что-бы понять что откуда растёт, поэтому все на него смотрят минут 10, чешут голову и идут к следующей теме :))) Обычно такой код составляют из универсальной функции которая читает содержимое директории и возвращает массив. Тогда код обхода становится более компактным и понятным - такая организация кода поможет разобоаться и вам в проблеме и нам помочь будет гораздо проще. | |
|
|
|
|
|
|
|
для: cheops
(12.08.2005 в 12:20)
| |
<?php
// sort($dirs2);
for ($i2=0;$i2<sizeof($dirs2);$i2++)
{
$name2 = $dirs2[$i2];
//Äåëàåì ïðîâåðêó
$r_dir_3 = readdir(opendir($folder.'/'.$name.'/'.$name2));
if(empty($r_dir_3)) {
?>
|
А если поизмыватся над условием???
выдает
Т.к. дирректория 1 есть, проверим нет ли в ней папок ?
В дирректории 11 нет папок.
Т.к. дирректория 2 есть, проверим нет ли в ней папок ?
Т.к. дирректория 3 есть, проверим нет ли в ней папок ?
В дирректории 31 нет папок.
В дирректории 32 нет папок.
В дирректории 33 нет папок.
Т.к. дирректория 4 есть, проверим нет ли в ней папок ?
Т.к. дирректория 5 есть, проверим нет ли в ней папок ?
В дирректории 51 нет папок.
В дирректории 52 нет папок.
В дирректории 53 нет папок.
Т.к. дирректория 6 есть, проверим нет ли в ней папок ? | |
|
|
|
|
|
|
|
для: Андрюха.
(12.08.2005 в 12:56)
| | Хм... а структура директорий какая? | |
|
|
|
|
|
|
|
для: cheops
(12.08.2005 в 13:10)
| | Это Вы меня???
1- корневая
11-подкаталог | |
|
|
|
|
|
|
|
для: Андрюха.
(12.08.2005 в 15:22)
| | Да мне все-то нужно проверить пустая ли прочитанная дирректория.
-если пустая -=FALSE=-
-если не пустая -=TRUE=-
Забудте вы этот код, что сверху, напишите самый простой, свой код.А код оптимизирую, когда наведу мосты окончательно. | |
|
|
|
|
|
|
|
для: totx
(12.08.2005 в 19:06)
| | Просто для директории или нужно осуществить спуск вниз по дереву директорий? | |
|
|
|
|
|
|
|
для: cheops
(12.08.2005 в 19:22)
| | Мне нужно просто для прочитанной дирректории.
А, что ты имел ввиду под:
спуск вниз по дереву директорий
|
Если не сложно покажи разницу. | |
|
|
|
|
|
|
|
для: totx
(12.08.2005 в 21:35)
| | Допустим скрипт для проверки пустая директория или нет может выглядеть следующим образом:
<?php
// Имя директории
$dirname=".";
if(is_empty_dir($dirname)) echo "В директории имеются файлы";
else echo "Директория пуста";
// Функция, которая проверяет имеются в
// директории файлы или нет
function is_empty_dir($dirname)
{
// Открываем директорию
$dir = opendir($dirname);
// Читаем директорию
while ($file = readdir($dir))
{
if (is_file($dirname."/".$file))
{
// Закрываем директорию
closedir($dir);
return true;
}
}
// Закрываем директорию
closedir($dir);
return false;
}
?>
|
Однако он проверит только одну директорию, если нужно проверить файлых всех вложенных друг в друга директорий, то прибегают к рекурсивному спуску по дереву директорий, как например в скриптах
http://www.softtime.ru/scripts/replace.php
http://www.softtime.ru/scripts/numlines.php
http://www.softtime.ru/scripts/ftpscaner.php | |
|
|
|