Hello,
habe den Fehler gefunden.
Man muss natürlich bei is_dir($dir."/".$filename) auch im passenden Verzeichnis nachschauen. *grummel*
Und hier nun noch die gewünschte rekursive Funktion für get_tree() und die reparierte für get_subdirs()
<?php ### dirlist.php ###
Funktionen zur Erzeugung einer Directoryliste
//----------------------------------------------------
function get_subdirs($dir)
{
$dirlist=array();
$dh=@opendir($dir);
if ($dh)
{
while ($filename=readdir($dh))
{
if (is_dir($dir."/".$filename) and ($filename !=".") and ($filename !=".."))
{
$dirlist[]=$filename;
}
}
closedir($dh);
}
else
{
// ggf. Fehlermeldung setzen
return false;
}
asort($dirlist);
return $dirlist;
}
//-----------------------------------------------------
function get_tree($dir)
{
$dirlist=array();
$dh=@opendir($dir);
if ($dh)
{
while ($filename=readdir($dh))
{
if (is_dir($dir."/".$filename) and ($filename !=".") and ($filename !=".."))
{
$dirlist[$filename]= get_tree($dir."/".$filename);
}
elseif(is_file($dir."/".$filename))
{
$dirlist[]=$filename;
}
}
closedir($dh);
}
else
{
// ggf. Fehlermeldung setzen
return false;
}
asort($dirlist);
return $dirlist;
}
//======================================================
$tree = get_tree("..");
echo "<pre>";
print_r($tree);
echo "</pre>";
?>
Grüße
Tom