mehrdimensionales array in foreach...

keckskoenig

Grünschnabel
hi! ich bin langsam am verzweifeln.
also ich hab ein mehrdimensionales array um genau zu sein ist es ne 3 dimensionales array
also $arr[][][]
dieses array ist mit ziemlich vielen werten befüllt.jetzt möchte ich einzelne werte auslesen unnahc einem gewissen schema verarbeitn . das große problem: das jeweils bearbeitete element soll in die nächste bearbeitungsphase mit eingehen. das heißt also
$arr[5][3][2] kricht einenen anderen wert (evtl nochmal ein array) zugewiesen und soll beim nächstne bearbeitungs schritt schon in $arr drinnsein.
habe das atm so probiert, das ich eine function geschrieben hab, die neben andere werten die zur verarbeitung wichtig sind das multidimensionale array übergeben bekommt. die function ist ne vierfach verschachtelte foreach($arr as $key => $value) mit noch einigem krimskrams zum auswerten und bearbeiten des aktuell ausgewählten wertes drumrum.
ich dahcte das ich eigentlich dadurch da sich mir die schlüssel ja übergeben lasse am ende per return zur aufrufenden function zurücksprinte und das bearbeitete array wieder reinreiche. leider schetert es schon daran, das ich die dynameishcen shclüssel ders multiarrays nichtmehr komplett einfügen kann.

habe jetzt auf PHP.net gelesen das foreach nur mit ner Kopie des Arrays arbeitet und nicht mt dem originaln. ligt da vllt der hund begaben

hier mal auszugsweise der quellcode:


also bin über jede hilfe froh und dafür dankbar!
hoffe da sproblem kommt rüber ich will einfach
single_attack($subvalue,$enemys,$army,$unit_array,$pierce_units,$normal_units);
mit dem schon bearbeiteten array aufrudfen und nahc dem letzten durchgang ein mehrdimensionales mit den manipulierten werten gefülltes array haben...


ps.: wa smich auchnoch wundert ist, dasa $subkey aus der ltzten foreachschleife keinen wert (also per gettype() null) hat obwohl ich mit array_rand(array_keys($army[$value][$key])) dareinschrieben kann und auch ne wahres ergebnis kommt...

THX
 
Zuletzt bearbeitet:
Sieht sehr nach einer Kampfengine für ein Browsergame aus oder ;) Ich hab mir deinen Code zwar nicht genau angeschaut (zu faul gerade) aber ich denke du kannst dein Problem relativ einfach lösen wenn du das Array einfach öfters durchlaufen lässt oder während du das eine Array durchgeht einfach alle Werte in ein neues schmeist und dann die Werte vom neuen Array vergleichtst... Ist vllt nicht die feinste Methode aber die einfachste die mir grad einfällt. Hoffe mal ich konnte dir wenigsten etwas helfen...
 
ja habt das problem gelöst es ist nicht möglich das gade in einer foreachschleie befindliche array zu editerien. hab jetzt einfahc vorher ne kopie von dem arr gemacht und diese kopie wird in der foreach des original arrays bearbeitet. funktioniert bombe!
 

Neue Beiträge

Zurück