Loop multidimensional array

Tags:    php

Hvordan looper jeg en multidimensional array hvor jeg ikke kender hvor mange "dybder" arrayen har.

Hvis min array f.eks. ser sådan her ud:
Fold kodeboks ind/udPHP kode 


Så vil jeg gerne påvirke ALLE strings der findes i den array.

Det vil sige, at jeg gerne vil ændre alle strings, men stadig beholde samme anatomi.



5 svar postet i denne tråd vises herunder
2 indlæg har modtaget i alt 4 karma
Sorter efter stemmer Sorter efter dato
Du skal lave en funktion som vil kunne håndtere dit indhold rekursivt.

Dvs. at funktionen skal tage sig af de forskellige scenarier som du kan komme ud for med dit indhold. Ulempen er dog at hvert entry er uafhængig af forrige og næste entry, så skal din manipulation af arrayet afhænge af dette, så er det mere komplekst, men skal du kun ændre noget dit entry ud fra noget specifikt i entriet kan du "nøjes" med en simpel rekursiv funktion.

Herunder har jeg prøvet at lave et simpelt eksempel.

Fold kodeboks ind/udPHP kode 




Indlæg senest redigeret d. 28.07.2014 23:01 af Bruger #8782
Rekursion er hvad vi er ude i, og du har også et meget glimrende eksempel oppe fra Jens Stigaard, der introducerer dig til emnet.

Det lykkedes mig at frembringe et yderligere eksempel (RecursiveArrayIterator), som virker i 5.2.0 - 5.2.3. Hvis der er nogen der har en idé til at få det til at virke, må I endelig sige til - bare for sjovs skyld (copy of value, ArrayIterators references ikke, og det er der jeg er gået kold..) - http://3v4l.org/qSrZ8

Men egentlig findes der allerede en funktion der kan gøre nøjagtigt dette, med et callback.

array_walk_recursive - http://3v4l.org/uk5kv



Indlæg senest redigeret d. 29.07.2014 00:08 af Bruger #17260
Fik Jenses til at virke, men fandt så også ud af at det var den forkerte løsning at bruge. Anyway vil helt sikkert få brug for den funktion på et andet tidspunkt :)



...men fandt så også ud af at det var den forkerte løsning at bruge.


Hvorfor er det den forkerte løsning at bruge?





Du kan også gøre sådan her:
Fold kodeboks ind/udPHP kode 




t