Ich möchte in der Lage sein, die Ebene eines Arrays zu kennen, während es erstellt wird.
Der Code durchläuft eine Reihe von Verzeichnissen, um ein massives mehrdimensionales Array zu erstellen.
Während das Array erstellt wird, möchte ich wissen, wie tief ich in dem Array bin.
%Vor%Im obigen Beispiel befindet sich das Stammverzeichnis in Ebene 1. Alle einzelnen Großbuchstaben befinden sich in Ebene 2. Alle Großbuchstaben mit einer Nummer befinden sich in Ebene 3. Alle Großbuchstaben mit einer Zahl und einem Kleinbuchstaben befinden sich in Ebene 4 .
Wenn ich das Array erstelle, gibt es irgendeine Möglichkeit für mich zu wissen, in welchem Level ich bin? Das Array wird mit einer rekursiven Funktion erstellt.
Dies ist eine PHP-Frage.
Dies könnte tangential zu Ihrer Frage zu dem Array sein, aber Sie könnten zwei Fliegen mit einer Klappe schlagen, indem Sie einen rekursiven Verzeichnis-Iterator verwenden.
%Vor%Was würde etwas ausgeben wie:
%Vor% Wie Sie sehen können, wird RecursiveIteratorIterator::getDepth()
verwendet, um die aktuelle Tiefe des rekursiven Iterators zu erhalten, was der Grund dafür ist, diesen Ansatz vorzuschlagen.
Angenommen, Ihre Array-Struktur sieht ungefähr so aus:
%Vor%Dann kann ein sehr ähnlicher Ansatz zum Abrufen der Werte von einem rekursiven Verzeichnis-Iterator (diesmal jedoch mit einem rekursiven Array-Iterator) verwendet werden. Eine schnelle Schleife über die "übergeordneten" Arrays kann uns den "Pfad" vom aktuellen Element zurück zum Root geben.
%Vor%Die Ausgabe wäre die gleiche wie die frühere für den Verzeichnis-Iterator.
TL; DR Wir können rekursive Iteratoren von den SPL-Iteratoren verwenden, um das Arbeiten mit rekursiven / tiefe Strukturen viel einfacher.
TL; DR; TL; DR SPL, hey ja!
Vielleicht stellen Sie die falsche Frage. Was ist das Endziel? Zum Beispiel gibt es eine RecursiveDirectoryIterator -Klasse innerhalb von SPL, vielleicht wird das für Sie tun? Der Aufbau eines großen multidimensionalen Arrays wird viel Speicher verbrauchen, weshalb es vielleicht ausreichen würde, einfach rekursiv über all diese Dateien zu iterieren?
Tags und Links arrays php multidimensional-array