• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Ordnerstruktur abbilden

Hey
ich versuche grade verschiedene, ineinander liegende Ordner mit ihrem Inhalt (Dateien) abzubilden. Also Praktisch ein Dateibaum.

Ich habe es bisher mit glob() und dem herkömmlichen readdir() - opendir(). Allerdings bekomme ich wechselseitig entweder Fehler ohne Ende oder er macht nich was ich möchte.

Kann mir bitte Jemand einen Denkanstoß (am Besten mit Codebeispiel) geben. Wäre echt suuper.

lg & Danke im Vorraus
 
Werbung:
Hey
erstamal danke für die Antwort!
RecursiveDirectoryIterator ist schonmal super. Mein Ziel ist es ein Mehrdimensionales Array zu bekommen wo alle Ordner und Dateien in der richtigen Hirachie vorhande sind.
Bsp.:
Code:
array(
ordner1[] => array
 (
    ordner2[] => array
    (
                 order3[] => array
                 (
                                  dateiX
                                  dateiY
                 )
                 dateiA
                 dateiB
    )
    datei1
    datei2
    datei3
    datei4
    )
)
Mein bisheriger Versuch schafft das ganze auf erster Ebene. Mir fällt einfach nichts ein, wie ich es mit folgenden mache könnte.

Mein bisheriger Code:
Code:
<?php
$path = './content';

$objects = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path), RecursiveIteratorIterator::SELF_FIRST);
$ordner = array();
foreach($objects as $file => $objekt)
{
    $file = str_replace("./content/", "", $file); 
    if(strstr($file, ".") == false)
    {
        $ordner[$file] = glob("./content/".$file."/*");
    }
}
print_r($ordner);
?>
lg & Danke im Vorraus!
 
Werbung:
Hey
habe mich nochmal dran gesetzt und eine weitere Möglichkeit gefunden:
Code:
<?php
$path = './content/';
$baum = glob($path."*");
$anzahl = count($baum);
$num = 0;
while($num < $anzahl)
{
    if(is_dir($baum[$num]))
    {
        $baum[$baum[$num]] = glob($baum[$num]."/*");
        //
        $anzahl1 = count($baum[$baum[$num]]);
        $num1 = 0;
        while($num1 < $anzahl1)
        {
            if(is_dir($baum[$baum[$num]][$num1]))
            {
                $baum[$baum[$num]][$baum[$baum[$num]][$num1]] = glob($baum[$baum[$num]][$num1]."/*");                        
                $baum[$baum[$num]][$num1] = false;
            }
            $num1++;
        }
        //
        $baum[$num] = false;
    }
    $num++;
}
print_r($baum);
?>
Dies funktioniert zwar ganz gut - allerdings muss für jede Ebene ein riesiger Aufwand getrieben werden (bisher hab ich das ganze nur für 2 Ebenen geschrieben. Ca. 10 weiter müssten noch folgen). Kennt jemand eine einfachere variante?
 
PHP:
<?php
$path = realpath('../Bilder');

$objects = new RecursiveDirectoryIterator($path, FilesystemIterator::CURRENT_AS_SELF | FilesystemIterator::SKIP_DOTS);

function listDir ($iterator) {
    $list = array();
    foreach ($iterator as $file) {

        if ($file->isDir()) {
            $list[$file->getSubPathName()] = array();

            if ($file->hasChildren()) {
                $childs = $file->getChildren();
                $list[$file->getSubPathName()] = listDir($childs);
            }
        } elseif($file->isFile()) {
            $list[] = basename($file->key()); 
        }
    }
    return $list;
};

$directories = listDir($objects);
print_r($directories);
 
Werbung:
Werbung:
Werbung:
Zurück
Oben