Ankündigung

Einklappen
Keine Ankündigung bisher.

Auf Arrayelement aus Funktion direkt zugreifen???

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Auf Arrayelement aus Funktion direkt zugreifen???

    Hi all,

    Wenn eine Funktion ein Array zurückliefert und ich dann auf ein Element dieses Ergebnis-Arrays zugreifen will, geht das auch in einer Zeile ohne Zwischenspeicherung?

    --> so gehts ...
    PHP-Code:
    $Arr = function();
    $EinElement $Arr[0]; 

    --> so hätte ich es gerne ...
    PHP-Code:
    $EinElement = function()[0]; 
    Bei anderen Sprachen geht das z.B. so: $EinElement = function().[0]

    da gibt's doch in PHP bestimmt auch einen Trick??

    1000 Dank!
    jwka61

  • #2
    Leider nein. Falls doch jemand einen kennt, würde er mich brennend interessieren

    Ergänzung: Wenn es um das erste oder letzte Element geht handhabe ich das i.d.R. so:

    PHP-Code:
    $erstesElement reset(eineFunktion());
    // bzw.:
    $letztesElement end(eineFunktion()); 

    Kommentar


    • #3
      Danke für die Antwort! Bin ich ja doch nicht sooo doof.

      Leider geht's be mir mit reset & end nicht - das Array ist mit String-Indices und "mein" Item ist irgendwo in der Mitte ...

      Wenn doch noch jemand nen Trick hat ... ich brenne (auch) darauf!

      jwka

      Kommentar


      • #4
        PHP-Code:
        $key 'meins';
        $array = array(
          
        'deins' => '13123',
          
        'meins' => '332342',
          
        'seins' => '342424',
          
        'ihrs'  => 'sdasd'
        );
        var_dump(array_keys($array$key));
        var_dump(array_key_exists($key$array)); 
        PHP: array_keys - Manual
        PHP: array_key_exists - Manual

        Mit diesen 2 Methoden sollten sich deine Probleme in Luft auflösen

        Edit:
        olololol. Ach ich glaube jetzt gerafft zu haben was du wills. Ähm mir ist nicht bekannt, dass so etwas geht. Aber normalerweise kannst du mit end() und reset() auch mit nicht nummerisches Indexen arbeiten.

        Kommentar


        • #5
          Wie meinst du das? Der zweite Parameter von array_keys dient doch zur Suche nach Werten.

          Kommentar


          • #6
            tja, es scheint eine Funktion zu fehlen, wie

            arr_val( index )

            na ja, meist reicht ja auch $Array[ index ], nur in meinem speziellen Falle, in den das Array als Rückgabe einer Funktion geliefert wird, ich aber nur einen bestimmten Wert benötige, brauch ich dann zwei Zeilen.

            Schade ...

            jwka

            Kommentar


            • #7
              Wenn Du unbedingt einen Schritt sparen willst bastel Dir ne eigene Funktion:
              PHP-Code:
              function array_get_from_func($callback_array=false$offset=0) {
                
              $element = (is_array($callback_array))? array_slice($callback_array$offset1): false;
                return (
              $element)? $element[0]: false;
              }

              // Einzeiliger Aufruf (schematisch):
              $EinElement array_get_from_func(function(), 5); 
              Nicht getestet, sollte aber funktionieren.

              Kommentar


              • #8
                Warum einfach, wenns auch kompliziert geht?

                PHP-Code:
                function array_offset(array $array$offset) {
                    return 
                $array[$offset];
                }

                $einElement array_offset(eineFunktion(), 5); 
                Edit: funktioniert so vor allem auch mit assoziativen Arrays
                PHP-Code:
                $einElement array_offset(eineFunktion(), 'key'); 

                Kommentar


                • #9
                  Jo, hast natürlich generell recht. Aber wenn ich schon ne eigene Funktion bastel, möchte ich auch den Rückgabewert und fehlerhafte Parameterübergaben kontrollieren.

                  EDIT
                  funktioniert so vor allem auch mit assoziativen Arrays
                  Das würde es bei mir auch...

                  Kommentar


                  • #10
                    Dass ich das "basteln" kann, war mir schon klar.

                    Aber da ist dann das umspeichern in ein Array und dieses auszulesen in meinem Falle einfacher - ich wollte ja um das explizite weitere Array rum kommen.

                    Werde mal dem Hersteller der Funktion vorschlagen, eine "Properties-Funktion" zur Verfügung zu stellen, an die man den Key direkt übergeben kann.

                    Danke an alle.
                    jwka61

                    Kommentar


                    • #11
                      ich wollte ja um das explizite weitere Array rum kommen.
                      Ein Array wird von der Funktion so oder so generiert. Ob DU nun eine Funktion bastelst oder der Entwickler eine Möglichkeit implementiert, kommt imho aufs gleiche heraus.

                      Kommentar


                      • #12
                        Zitat von Arne Drews Beitrag anzeigen
                        Jo, hast natürlich generell recht. Aber wenn ich schon ne eigene Funktion bastel, möchte ich auch den Rückgabewert und fehlerhafte Parameterübergaben kontrollieren.

                        EDIT
                        Das würde es bei mir auch...
                        Okay, den Parameter-Check geb ich dir, array_slice ist trotzdem Overkill

                        @jwka61: Wenn du dir um Performance Sorgen machst weil das Array zusätzlich in einer Variable gespeichert wird: Das musst du dank copy-on-write nicht, PHP speichert i.d.R. nichts doppelt.

                        Kommentar


                        • #13
                          array_slice ist trotzdem Overkill
                          Stimmt, für diesen Fall ja!

                          Kommentar


                          • #14
                            Es geht mir an dieser Stelle eigentlich eher um Code-Kompaktheit.

                            Ich würde mal sagen: Für mich ist dei Sache erstmal geklärt, ich muss mit den zwei zusätzlichen Zeilen Code leben.

                            Danke für Eure Hilfe!
                            jwka

                            Kommentar


                            • #15
                              $EinElement = function().[0]
                              Kannst ja Objekte benutzen. Genau genommen ist das oben nämlich auch eine Objektnotation.

                              $EinElement = $whatever->function()->item(0);

                              Kommentar

                              Lädt...
                              X