Enrico: PHP: Rekursives Einlesen von Ordnern und Dateien liefert doppelte Werte

Beitrag lesen

Hallo,

sorry, euch wieder bemühen zu müssen, aber ich komme bei einem blöden Problem einfach nicht weiter.

Ich habe folgende Funktion, um rekursiv ein Verzeichnis samt Unterordnern und enthaltener Dateien einzulesen:

function elementeEinlesen ($pfad, &$resultat = [])
{
   $elemente = scandir ($pfad);

   foreach ($elemente as $element)
   {
      if (!is_dir ($pfad . DIRECTORY_SEPARATOR . $element))
      {
         $resultat[] = $element;
      }
      else
      {
         if ($element != "." && $element != "..")
         {
            elementeEinlesen ($pfad . DIRECTORY_SEPARATOR . $element, $resultat[$element]);

            $resultat[] = $element;
         }
      }
   }

   return $resultat;
}

Hierbei erhalte ich in meiner Testumgebung folgende Ausgabe:

    Array (4)
    (
    |    ['fotos'] => Array (2)
    |    (
    |    |    ['live'] => Array (2)
    |    |    (
    |    |    |    ['17_3_28_Schrobenhausen'] => Array (8)
    |    |    |    (
    |    |    |    |    ['0'] = String(5) "1.jpg"
    |    |    |    |    ['1'] = String(5) "2.jpg"
    |    |    |    |    ['2'] = String(5) "3.jpg"
    |    |    |    |    ['3'] = String(5) "4.jpg"
    |    |    |    |    ['4'] = String(5) "5.jpg"
    |    |    |    |    ['5'] = String(5) "6.jpg"
    |    |    |    |    ['6'] = String(5) "7.jpg"
    |    |    |    |    ['7'] = String(5) "8.jpg"
    |    |    |    )
==> |    |    |    ['0'] = String(22) "17_3_28_Schrobenhausen"
    |    |    )
==> |    |    ['0'] = String(5) "live"
    |    )
==> |    ['0'] = String(6) "fotos"
    |    ['presse'] => Array (3)
    |    (
    |    |    ['0'] = String(13) "bandfotos.zip"
    |    |    ['1'] = String(13) "bandlogos.zip"
    |    |    ['2'] = String(24) "informationsmaterial.pdf"
    |    )
==> |    ['1'] = String(7) "presse"
    )

Die mit voranstehenden Pfeilen markierten Einträge sind "fälschlicherweise" doppelt angelegt.

Was habe ich falsch gemacht?

Vielen, vielen lieben Dank für eure Hilfe und Gruß
Enrico

akzeptierte Antworten