Arrayzugriff

04/05/2011 - 22:50 von Stefan+Usenet | Report spam
Gegeben sei einerseits ein, groesseres, assoziatives Array mit
vollkommen wirren Dimensionen, also z.B.

| $a = array(
| 1 => 'x',
| 2 => 'x',
| 3 => array(
| 1 => 'x', 2 => 'x', 3 => 'x'
| ),
| 4 => 'x',
| 5 => array(
| 1 => array( 1 => 'x', 2 => 'x'),
| 2 => 'x'
| )
| );

und andererseits eine Reihe von zu aendernden Komponente, die
jeweils in Formen wie zB

| $key = array (5,1,2);
| $value = 'y';

angegeben sind (in ihrer Gesamtheit natuerlich auch noch einmal in
ein Datenformat zusammengepackt, das fuer den Einzelfall aber
irrelevant ist).

Es ist garantiert, dass alle angesprochenen Komponenten auch
tatsaechlich existieren und nicht z.B. ein Blatt durch einen Knoten
ueberschrieben wird oder umgekehrt.

Gibt es denn irgendeine Zugriffsmoeglichkeit auf das Array, mit der
ich _einfach_ die Komponenten austauschen kann? 100te Array-
Funktionen, aber nichts kommt mir unter, was dafuer passend
erscheint. Und "zu Fuss" ist das irgendwie erstaunlich aufwaendig.

Servus,
Stefan

http://kontaktinser.at/ - die kostenlose Kontaktboerse fuer Oesterreich
Offizieller Erstbesucher(TM) von mmeike

Jaulen mit Stefan - vertraut werden mit Vorsicht.
(Sloganizer)
 

Lesen sie die antworten

#1 Benjamin Zikarsky
05/05/2011 - 09:08 | Warnen spam
Am 04.05.2011 22:50, schrieb Stefan Froehlich:
Gegeben sei einerseits ein, groesseres, assoziatives Array mit
vollkommen wirren Dimensionen, also z.B.

[Beispiel]

und andererseits eine Reihe von zu aendernden Komponente, die
jeweils in Formen wie zB

[Beispiel 2]

angegeben sind (in ihrer Gesamtheit natuerlich auch noch einmal in
ein Datenformat zusammengepackt, das fuer den Einzelfall aber
irrelevant ist).

Gibt es denn irgendeine Zugriffsmoeglichkeit auf das Array, mit der
ich _einfach_ die Komponenten austauschen kann?




Warum schreibst du dir nicht selbst schnell eine einfache Funktion?
Ich weiß zwar nicht, ob ich dich richtig verstanden habe, aber sowas
könnte in deinem Fall doch so aussehen:

function modify_my_array($data, $path, $newvalue) {
$node =& $data;
while (count($path) > 1) {
$node =& $node[array_shift($path)];
}

$node[array_shift($path)] = $newvalue;
return $data;
}

Eventuell solltest du noch Fehlerbehandlung einbauen, für den Fall, dass
doch mal ein Pfad nicht existiert. z.B. die entsprechenden Nodes einfach
anlegen.

HTH
Benjamin

Ähnliche fragen