Gerry: Zugriff auf bestimmtes Element eines zurückgegebenen Arrays

Guten Abend,

wie greift man am einfachsten auf ein bestimmtes Element eines Arrays zu, das in einer Funktion als Rückgabewert definiert ist? Muss man der Funktion den Index des Elementes als Parameter übergeben oder geht es auch einfacher?

LG
Gerry

  1. Tach auch.

    wie greift man am einfachsten auf ein bestimmtes Element eines Arrays zu, das in einer Funktion als Rückgabewert definiert ist? Muss man der Funktion den Index des Elementes als Parameter übergeben oder geht es auch einfacher?

      
    function meineFunktion() {  
      $myArray = array('bla' => 'blb', 'ttt' => 'mmm');  
      return $myArray;  
    }  
      
    $ret = meineFunktion();  
    echo $ret['bla'];
    

    Bis die Tage,
    Matti

    1. Hallo Matti,

      vielen Dank für den Code.

      function meineFunktion() {
        $myArray = array('bla' => 'blb', 'ttt' => 'mmm');
        return $myArray;
      }

      $ret = meineFunktion();
      echo $ret['bla'];

        
      So etwas hatte ich mir gewünscht. :-)  
        
      Übrigens hatte ich noch vergessen zu erwähnen, dass es ja auch unschön und nicht gerade performant ist eine Funktion mit einem Array-Index als Parameter mehrfach aufzurufen, nur um an die Inhalte des Arrays zu gelangen.  
        
      Schönes Wochenende.  
        
      LG  
      Gerry
      
  2. wie greift man am einfachsten auf ein bestimmtes Element eines Arrays zu, das in einer Funktion als Rückgabewert definiert ist? Muss man der Funktion den Index des Elementes als Parameter übergeben oder geht es auch einfacher?

    Man kann der Funktion einen Parameter übergeben woran diese erkennt, daß kein array, sondern eine einzelne Variable (und welche) zurückgegeben werden soll. Einen anderen Weg als kein array zurückzugeben gibt es in PHP nicht, wenn man nicht erst das ganze array speichernm oder sonst wie verarbeiten will.

    1. Hallo,

      wie greift man am einfachsten auf ein bestimmtes Element eines Arrays zu, das in einer Funktion als Rückgabewert definiert ist?

      indem man das von der Funktion gelieferte Array erst speichert, und dann auf das Einzelelement zugreift:

      $a = info();
        echo $a[4];

      PHP ist leider nicht in der Lage, ein Array "freihändig" zu verarbeiten, so dass die intuitivere kurze Formulierung

      echo info()[4];

      in PHP nicht möglich ist. Javascript könnte das ...

      Man kann der Funktion einen Parameter übergeben woran diese erkennt, daß kein array, sondern eine einzelne Variable (und welche) zurückgegeben werden soll.

      Das ist auch eine Möglichkeit, aber nur wenn man die Funktion entsprechend umschreiben kann. Bei den Standardfunktionen von PHP hilft das natürlich nicht.

      Ciao,
       Martin

      --
      Fische, die bellen, beißen nicht.
      Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
      1. Hallo Martin,

        vielen Dank für deine Hilfe.

        indem man das von der Funktion gelieferte Array erst speichert, und dann auf das Einzelelement zugreift:

        $a = info();
          echo $a[4];

        Prima, diese Syntax habe ich sozusagen gesucht.

        PHP ist leider nicht in der Lage, ein Array "freihändig" zu verarbeiten, so dass die intuitivere kurze Formulierung

        echo info()[4];

        in PHP nicht möglich ist. Javascript könnte das ...

        Das hatte ich befürchtet.

        Man kann der Funktion einen Parameter übergeben woran diese erkennt, daß kein array, sondern eine einzelne Variable (und welche) zurückgegeben werden soll.

        Wie würde das aussehen?

        Das ist auch eine Möglichkeit, aber nur wenn man die Funktion entsprechend umschreiben kann. Bei den Standardfunktionen von PHP hilft das natürlich nicht.

        Allerdings müsste man die Funktion dann ja für den Zugriff auf jede einzelne Variable erneut aufrufen.

        Schönes Wochenende.

        LG
        Gerry

        PS: Ich hatte noch vergessen zu erwähnen, dass es ja auch unschön und nicht gerade performant ist eine Funktion mit einem Array-Index als Parameter mehrfach aufzurufen, nur um an die Inhalte des Arrays zu gelangen.

        1. $a = info();
            echo $a[4];

          Prima, diese Syntax habe ich sozusagen gesucht.

          Da wäre ich nicht im Traum drauf gekommen, daß Du die suchst. Ganz erhrlich, keine Ironie.

          Man kann der Funktion einen Parameter übergeben woran diese erkennt, daß kein array, sondern eine einzelne Variable (und welche) zurückgegeben werden soll.

          Wie würde das aussehen?

          Kann es sein, daß Du kaum die Grundlagen von php kennst?
          http://tut.php-quake.net/de/function.html

          Man übergibt einer (eigenen) Funktion einen Parameter. Diesen Parameter wertet man in der Funktion aus. Hat die Funktuion einen bestimmten Wert, gibt man nicht das ganze Array zurück, sondern nur die gewünschte Variable.

          Allerdings müsste man die Funktion dann ja für den Zugriff auf jede einzelne Variable erneut aufrufen.

          Logisch, daß müßte man aber auch, wenn

          echo info()[4];

          möglich wäre. Du wolltest doch nur auf einen Wert zugreifen, was soll dann der Einwand?

          PS: Ich hatte noch vergessen zu erwähnen, dass es ja auch unschön und nicht gerade performant ist eine Funktion mit einem Array-Index als Parameter mehrfach aufzurufen, nur um an die Inhalte des Arrays zu gelangen.

          Wenn man mehrere Werte will, die eine Funktion liefern kann, dann soll man sich auch mehrere zurükgeben lassen.

          1. Man übergibt einer (eigenen) Funktion einen Parameter. Diesen Parameter wertet man in der Funktion aus. Hat die Funktuion einen bestimmten Wert, gibt man nicht das ganze Array zurück, sondern nur die gewünschte Variable.

            Ich meinte natürlich: Hat der Parameter einen bestimmten Wert, gibt man nicht das ganze Array zurück, sondern nur die gewünschte Variable.

          2. Hallo Texter mit x,

            danke für deine Antwort.

            Da wäre ich nicht im Traum drauf gekommen, daß Du die suchst. Ganz erhrlich, keine Ironie.

            War meine Frage wirklich so schlecht gestellt?

            Kann es sein, daß Du kaum die Grundlagen von php kennst?
            http://tut.php-quake.net/de/function.html

            Nein, das kann nicht sein. ;-)

            Man übergibt einer (eigenen) Funktion einen Parameter. Diesen Parameter wertet man in der Funktion aus. Hat der Parameter einen bestimmten Wert, gibt man nicht das ganze Array zurück, sondern nur die gewünschte Variable.

            Ach, so hast du das gemeint. Ok. (Ich hatte eher an ein bestehendes Konstrukt gedacht als daran das selbst zu programmieren, daher die Nachfrage.)

            Logisch, daß müßte man aber auch, wenn

            echo info()[4];
            möglich wäre. Du wolltest doch nur auf einen Wert zugreifen, was soll dann der Einwand?

            Ja, stimmt. Vergiss den Einwand.

            Wenn man mehrere Werte will, die eine Funktion liefern kann, dann soll man sich auch mehrere zurükgeben lassen.

            Logisch.

            LG
            Gerry

            1. Da wäre ich nicht im Traum drauf gekommen, daß Du die suchst. Ganz erhrlich, keine Ironie.

              War meine Frage wirklich so schlecht gestellt?

              Jein. Das eine Funktion die ein Array zurückgibt ein Array zurückgibt und wie man auf ein Element eines Arrays zugreifen kann, hatte ich bei der Frage als Kenntnis vorausgesetzt. Die Frage die Du gestellt hast kommt ohne die Kenntnis normalerweise nicht auf. Es schien also um eine Optimierung in der Art zu gehen, das Zwischenspeichern des Rückgabearrays einzusparen und nicht darum wie man ein Element aus dem Rückgabewert rausbekommt.

    2. Hallo Martin,

      danke für deine Antwort.

      Ich hatte noch vergessen zu erwähnen, dass es ja auch unschön und nicht gerade performant ist eine Funktion mit einem Array-Index als Parameter mehrfach aufzurufen, nur um an die Inhalte des Arrays zu gelangen.

      Schönes Wochenende.

      LG
      Gerry

      1. Hallo Martin,

        Sorry. "Hallo Texter mit x," :-)

      2. Ich hatte noch vergessen zu erwähnen, dass es ja auch unschön und nicht gerade performant ist eine Funktion mit einem Array-Index als Parameter mehrfach aufzurufen, nur um an die Inhalte des Arrays zu gelangen.

        Das muß man nicht erwähnen, das liegt auf der Hand.

        Es ist "unschön und nicht gerade performant", wenn man eine Funktion mehr Werte ermitteln und zurückgeben läßt als man braucht um die Werte dann auseinanderzunehmen.
        Es ist "unschön und nicht gerade performant", wenn man mehrere Werte einer Funktion haben will sich aber nur einzelne zurückgeben läßt und ie Funktion so mehrfach aufrufen muß.

        Die Lösung ist, wie so oft, man tut das was für den konkreten Fall sinnvoll ist. Wobei es auch sinnvoll sein kann, Funktionen einfachzuhalten und man dann lieber immer das leiche Array mit ggf. zu viele Werten zurückgibt. Die Nachteile davon sind i.d.R. klein.

        1. Das muß man nicht erwähnen, das liegt auf der Hand.

          Das war halt zunächst mein naiver Ansatz von dem ich weg wollte.

          Es ist "unschön und nicht gerade performant", wenn man eine Funktion mehr Werte ermitteln und zurückgeben läßt als man braucht um die Werte dann auseinanderzunehmen.
          Es ist "unschön und nicht gerade performant", wenn man mehrere Werte einer Funktion haben will sich aber nur einzelne zurückgeben läßt und ie Funktion so mehrfach aufrufen muß.

          Die Lösung ist, wie so oft, man tut das was für den konkreten Fall sinnvoll ist. Wobei es auch sinnvoll sein kann, Funktionen einfachzuhalten und man dann lieber immer das leiche Array mit ggf. zu viele Werten zurückgibt. Die Nachteile davon sind i.d.R. klein.

          Hast ja recht.