$GLOBALS für zweidimensionales Array
Linuchs
- php
Moin,
aus einem Array benötige ich einen Wert:
$path = $arr_projekt['img_veranstaltungen'];
funktioniert einwandfrei. Nun dasselbe in einer function:
$path = $GLOBALS['arr_projekt']['img_veranstaltungen'];
funktioniert nicht doch!, obwohl $GLOBALS['arr_projekt'] bekannt ist (var_dump).
Die Frage PHP Global Multidimensional Array... Or How would I do that? habe ich gefunden, aber keine Antwort.
Gruß, Linuchs
EDIT: Der Zugriff funktioniert, ich habe das Ergebnis falsch abgefragt ... sorry
$path = $GLOBALS['arr_projekt']['img_veranstaltungen'];
funktioniert, ich habe das Ergebnis falsch abgefragt
$path = $GLOBALS['arr_projekt']['img_veranstaltungen'];
funktioniert, ich habe das Ergebnis falsch abgefragt
Mist. Hatte das Beispiel gerade fertig...
Hallo Linuchs,
ja, sagt mir die PHP Sandbox auch gerade.
Besser fände ich übrigens das Statement
global $arr_projekt;
Sodann gibt's die Möglichkeit einer Closure - wobei ich nicht weiß, ob Du in deinem Fall die Funktion als anonyme Funktion schreiben kannst. Die use-Klausel gibt's nur für die.
$func = function() use ($arr_projekt) {
return $arr_projekt['img_veranstaltungen'];
}
echo $func(); // gibt 3 aus
Und noch besser fände ich eine Programmstruktur, wo Du keinen globals-Zugriff verwendest, sondern benötigte Daten als Argument übergibst. Funktionen, die aus ihrem Scope hinausgreifen, sind ein Unfall, der darauf wartet, zu passieren. Die Übergabe eines Arrays macht nicht mehr Aufwand als die Übergabe einer Zahl, weil PHP lediglich einen Verweis übergibt (aber beim ersten Schreibzugriff auf das Array eine Kopie fertigt - "copy-on-write").
Falls Du das Array in der Funktion verändern musst, übergib es als Referenz.
Rolf