Linuchs: $GLOBALS für zweidimensionales Array

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

  1. Hallo Linuchs,

    was wären wir nur ohne Cheatah...

    Rolf

    --
    sumpsi - posui - obstruxi
  2. $path = $GLOBALS['arr_projekt']['img_veranstaltungen'];

    funktioniert, ich habe das Ergebnis falsch abgefragt

    1. $path = $GLOBALS['arr_projekt']['img_veranstaltungen'];

      funktioniert, ich habe das Ergebnis falsch abgefragt

      Mist. Hatte das Beispiel gerade fertig...

    2. 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

      --
      sumpsi - posui - obstruxi