Transparent ein Array flach

8

Lesen Sie diese Frage Zusammenführen und Gruppieren nach mehreren Arrays Ich habe Folgendes erhalten Idee: Beim Arbeiten mit Multilevel-Arrays, mit möglicherweise wiederholenden Schlüsseln, wäre es praktisch, eine Funktion zu haben, die ein solches Array als flach durchläuft, wie

%Vor%

irgendwelche Ideen wie man flatten() schreibt? Gibt es eine Standardlösung?

(Beachten Sie, dass flatten() wegen wiederholter Schlüssel nicht einfach ein neues Array zurückgeben kann).

    
user187291 10.08.2011, 13:21
quelle

2 Antworten

13

Beispielverwendung von RecursiveArrayIterator

%Vor%

erweitert RecursiveIteratorIterator , um den aktuellen Schlüssel-Stack zurückzugeben

%Vor%

Noch eine andere Version, die dieses Mal keinen RecursiveArrayIterator verwendet:

%Vor%     
Yoshi 10.08.2011, 13:36
quelle
1

Sie können auch eine einfache Traversierungsfunktion schreiben:

%Vor%

Wenn Sie es nicht jedes Mal mit einer anderen Funktion als Parameter aufrufen wollen, habe ich auch einen Adapter geschrieben, der ein Array zurückgibt:

%Vor%

Anmerkungen:

  • array_walk_recursive kann nicht verwendet werden / ist nicht dasselbe, da es die Schlüssel überspringt, die ein Array enthalten
  • Ich habe meine Beispiele mit anonymen Funktionen geschrieben; Wenn Ihr PHP nicht neu genug ist, müssen Sie die Funktionen benennen und sie mit call_user_func aufrufen.
deviousdodo 07.10.2011 00:24
quelle