|
|
|
| Граждане, помогите разобраться, в чем здесь ошибка. Вот код, цель которого вывести структуру вложенной папки - список каталогов и файлов. Он работает:
<html>
<head>
<title>Òåñò</title>
<style><!--
a {
font-weight: bold;
color: blue;
}
//--></style>
</head>
<body>
<?php
function do_it ($dir)
{
$op = opendir($dir);
while (($f = readdir($op)) !== false)
{
$t = "$dir/".$f;
if (is_dir($t))
{
echo "<a>".$f."</a><br>";
}
}
$op2 = opendir($dir);
while (($f = readdir($op2)) !== false)
{
$t = "$dir/".$f;
if (!is_dir($t))
{
echo $f."<br>";
}
}
}
$name = "black";
do_it($name);
?>
</body>
</html>
|
Но когда я попытался добавить в него рекурсивный вызов функции, (т.е., в случае, если рассматриваемый в цикле while объект - папка, - снова вызывается функция do_it и принимает эту папку в качестве аргумента), результатом оказался сначала вертикальный ряд из нескольких сотен точек, затем экран мигнул, появилось "Невозможно отобразить страницу".
На всякий случай привожу тот фрагмент кода, где происходит рекурсия:
while (($f = readdir($op)) !== false)
{
$t = "$dir/".$f;
if (is_dir($t))
{
echo "<a>".$f."</a><br>";
do_it($t);
}
}
|
Большое спасибо всем ответившим.
PS.Снова внес тему не в тот форум. Снова прошу прощения. | |
|
|
|
|
|
|
|
для: ck
(01.12.2005 в 11:42)
| | Дело в том, что функция readdir() возвращает и скрытые директории, а любая директория снабжается двумя скрытыми поддиректориями .. - ссылка на родительскую директорию и . - ссылка на текущую директорию. Поэтому их следует отсеять, чтобы не зациклить рекурсию.
<?php
while (($f = readdir($op)) !== false)
{
$t = "$dir/".$f;
if (is_dir($t) && $f != ".." && f != ".")
{
echo "<a>".$f."</a><br>";
do_it($t);
}
}
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(01.12.2005 в 14:24)
| | Понято. Спасибо. | |
|
|
|