Ordnerstruktur rekursiv auslesen

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Ordnerstruktur rekursiv auslesen

    Hallou,
    ich versuche momentan die Ordnerstruktur eines SVN Repositories auszulesen und dazu steht mir mittels einer Klasse, die ich mir geladen habe, eine getDirectoryFiles()-Funktion zur Verfügung, die mir für einen Pfad (relativ zum Rootverzeichnis des Repositories) ein Array mit den in dem Ordner enthaltenen Unterordnern und Dateien wiedergibt, z.B.:
    PHP Code:
    [0]=>
      array(
    2) {
        [
    "last-mod"]=>
        
    string(29"Fri, 09 Jan 2009 15:11:18 GMT"
        
    ["path"]=>
        
    string(5"trunk/src"
        
    ["status"]=>
        
    string(15"HTTP/1.1 200 OK"
      
    }
      [
    1]=>
      array(
    3) {
        [
    "last-mod"]=>
        
    string(29"Mon, 26 Jan 2009 14:24:59 GMT"
        
    ["path"]=>
        
    string(4"trunk/Main.java"
        
    ["status"]=>
        
    string(15"HTTP/1.1 200 OK"
      
    }

    Mein Problem ist folgendes:
    Ich möchte jetzt die gesamte Ordnerstruktur (ohne Dateien, was soweit allerdings kein Problem darstellt) laden und die Ordner mit div-Tags mit class-Attribut entsprechend seines "Levels" und einer id versehen. Dafür müsste ich für jedes Array innerhalb des zurückgegebenen Arrays wieder die getDirectoryFiles()-Funktion mit dem jeweiligen "path"-Eintrag aufrufen um den nächsten Ordner auszulesen.

    Genau an der Stelle hapert es, ich komme nicht so recht auf einen funktionierenden Ansatz, wie ich so alle Ordner auslesen kann, meine bisherigen Überlegungen führten bislang zu keinem nennenswerten Ergebnis.

    Ich wäre sehr dankbar, wenn mir da jemand weiterhelfen könnte!

  • #2
    Re: Ordnerstruktur rekursiv auslesen

    Original geschrieben von jgs
    (...)
    Mein Problem ist folgendes:
    Ich möchte jetzt die gesamte Ordnerstruktur (ohne Dateien, was soweit allerdings kein Problem darstellt) laden und die Ordner mit div-Tags mit class-Attribut entsprechend seines "Levels" und einer id versehen. Dafür müsste ich für jedes Array innerhalb des zurückgegebenen Arrays wieder die getDirectoryFiles()-Funktion mit dem jeweiligen "path"-Eintrag aufrufen um den nächsten Ordner auszulesen.

    Genau an der Stelle hapert es, ich komme nicht so recht auf einen funktionierenden Ansatz, wie ich so alle Ordner auslesen kann, meine bisherigen Überlegungen führten bislang zu keinem nennenswerten Ergebnis.
    Wo steckt dein Problem?
    Weißt du nicht, wie man eine foreach()-Schleife über ein "leicht" verschachteltes Array ackern lässt?
    Oder möchtest du gern wissen, wie man nur die Verzeichniseinträge ausliest, die selbst wieder ein Verzeichnis sind?
    Klingon function calls do not have “parameters”‒they have “arguments”‒and they always win them!

    Comment


    • #3
      Ich vermute ersteres... Ich kann ja mal kurz skizzieren, wie ich mir das bisher vorgestellt habe:
      PHP Code:
      Schleife von 0 bis Ende des Arrays
          
      if(ArrayElement['path'ist ein OrdnergetDirectoryFiles(ArrayElement['path'])
              
      und durchlaufe Schleife für das neue Array
          else 
      stop
      EndSchleife 
      Dabei würde mir als Umsetzung für das "durchlaufe Schleife für das neue Array" nur verschachtelte Schleifen einfallen. Da müsste ich aber vorgeben, wie "tief" die Funktion die Struktur ausliest, was ich allerdings jetzt noch nicht sagen kann, da im Projektverlauf (für das das SVN benutzt wird) unbegrenzt viele Ordner angelegt werden können.

      Dazu kommt noch, dass dann jedes ArrayElement, auch jene die keine Ordner sind, immer wieder ausgelesen und überprüft wird (weist ArrayElement['path'] auf eine Datei, gibt getDirectoryFiles() wieder ein Array mit dem gleichen Inhalt, wie den des ArrayElements zurück) bis alle Schleifen durchlaufen wären. Das würde ich gern vermeiden, da das Auslesen schon merkbar lange dauert und so unnütze Wartezeit hinzukommt.

      Ich suche sozusagen einen Weg, es mit genau der jeweilig nötigen Tiefe auszulesen und mit meinem Ansatz bin ich da nicht wirklich weiter gekommen.

      Comment


      • #4
        Das Stichwort heißt Rekursion.

        Comment


        • #5
          Hm, völlig klar eigentlich... Keine Ahnung wieso ich davon ausging, dass Funktionen sich nich selbst aufrufen können...

          Comment

          Working...
          X