|
|
|
| Вообщем Я тут наваял скриптик просмотра дирректорий и субдирректорий, но почему-то при чтении поддиректорий с каждым разом новые прибавляются к уже ранее прочитанным. Помогите со скриптом, вот он:
<?php
$folder = 'temp';
$dir = opendir($folder);
while($line = readdir($dir))
{
if(is_dir($folder."/".$line) && $line!="." && $line!="..")
{
$dirs[] = $line;
$i++;
}
}
sort($dirs);
for ($i=0;$i<sizeof($dirs);$i++)
{
$name = $dirs[$i];
print "".$name."<br>";
//начало считывания поддиректорий
$sfolder = ''.$folder.'/'.$name.'';
$sdir = opendir($sfolder);
while($sline = readdir($sdir))
{
if(is_dir($sfolder."/".$sline) && $sline!="." && $sline!="..")
{
$sdirs[] = $sline;
$i2++;
}
}
sort($sdirs);
for ($i2=0;$i2<sizeof($sdirs);$i2++)
{
$sname = $sdirs[$i2];
print " ".$sname."<br>";
}
//заканчиваем 2-ой блок
print "-----<br>";
}
?>
|
| |
|
|
|
|
|
|
|
для: totx
(04.08.2005 в 15:04)
| | У вас не происходит обнуление временного массива перед использованием и он замусоривается предыдущими значениями. Ваш скрипт следует переписать следующим образом
<?php
$folder = 'scripts';
$dir = opendir($folder);
while($line = readdir($dir))
{
if(is_dir($folder."/".$line) && $line!="." && $line!="..")
{
$dirs[] = $line;
$i++;
}
}
sort($dirs);
for ($i=0;$i<sizeof($dirs);$i++)
{
$name = $dirs[$i];
print "".$name."<br>";
//начало считывания поддиректорий
$sfolder = ''.$folder.'/'.$name.'';
// Обнуляем массив $sdirs
unset($sdirs);
$sdir = opendir($sfolder);
while($sline = readdir($sdir))
{
if(is_dir($sfolder."/".$sline) && $sline!="." && $sline!="..")
{
$sdirs[] = $sline;
$i2++;
}
}
// Если массив $sdirs не пуст - сортируем его
if(!empty($sdirs)) sort($sdirs);
for ($i2=0;$i2<sizeof($sdirs);$i2++)
{
$sname = $sdirs[$i2];
print " ".$sname."<br>";
}
//заканчиваем 2-ой блок
print "-----<br>";
}
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(04.08.2005 в 15:45)
| | Большое спасибо, не думал, что так быстро ответят, и ответят вообще. Еще раз большое спасибо. | |
|
|
|
|
|
|
|
для: totx
(04.08.2005 в 17:44)
| | Подскажите код со следующими правилами:
А, если при чтении в диреектории - поддирректории есть, то нужно при выведении на страницу стирать последних 2 символа(буквы) названия дирректории.
тоесть:
print "дирректория"<br>";
//а как оказалось есть и поддиректории, то нужно вывести "дирректор"
print "есть поддиректории"<br>";
//а уже после "есть поддиректории"
|
| |
|
|
|
|
|
|
|
для: totx
(04.08.2005 в 19:17)
| | Здесь логика такая же как и в случае с сортировкой
<?php
if(!empty($sdirs)) sort($sdirs);
?>
|
Если массив $sdirs содержит хоть один элемент, значит имеются поддиректории
<?php
if(!empty($sdirs))
{
echo "дирректор<br>";
echo "есть поддиректории"<br>";
}
else
{
echo "дирректория"<br>";
}
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(04.08.2005 в 22:11)
| | Вы класно и правильно ответили на мой вопрос, но не до конца поняли чего Я хочу, к сожалению мне сложно объяснить, сейчас объясню попроще.
Т.к. функция readdir($dir) читает каталог, а если читать больше нечего то возвращает false, то нужно чтобы когда она возвращала false она делала заданное мной действие(типа print "".$name."<br> - минус 2 символа от имени последней прочитанной дирректории";)
Желательно если Вы хоть немного поможите с этим кодом, но можете и свой:
<?php
$folder = 'temp';
$dir = opendir($folder);
while($line = readdir($dir))
{
if(is_dir($folder."/".$line) && $line!="." && $line!="..")
{
$dirs[] = $line;
$i++;
}
}
sort($dirs);
for ($i=0;$i<sizeof($dirs);$i++)
{
$name = $dirs[$i];
print "".$name."<br>";
}
?>
|
| |
|
|
|