X-ray: Direkt auf bestimmtes Feld eines Array-Rückgabewerts zugreifen

Hallo zusammen!

Für folgendes Problem suche ich eine Lösung:

Eine Funktion gibt ein Array zurück. Nun möchte ich mit dem Wert in einem bestimmten Feld des Rückgabe-Arrays weiterarbeiten. Kann ich auf dieses Feld direkt zugreifen, ohne die Rückgabe der Funktion zwischenspeichern zu müssen?

Ein Beispiel:

  
function gibArray() {  
  return array('x', 'y');  
}  
  
// Folgendes funktioniert:  
$meinArray = gibArray();  
if ($meinArray[0] == 'x') echo 'Es ist ein x.';  
  
// Folgendes funktioniert nicht, etwas in der Richtung suche ich aber:  
if (gibArray()[0] == 'x') echo 'Es ist ein x.';  

Danke schonmal für Eure Hilfe!
Gruß Stefan

  1. Hello,

    Hallo zusammen!

    Für folgendes Problem suche ich eine Lösung:

    Eine Funktion gibt ein Array zurück. Nun möchte ich mit dem Wert in einem bestimmten Feld des Rückgabe-Arrays weiterarbeiten. Kann ich auf dieses Feld direkt zugreifen, ohne die Rückgabe der Funktion zwischenspeichern zu müssen?

    Nein. Das geht nicht.

    Liebe Grüße aus Syburg bei Dortmund

    Tom vom Berg

    --
    Nur selber lernen macht schlau
    http://bergpost.annerschbarrich.de
    1. Servus,

      Nein. Das geht nicht.

      Ich möchte erweitern auf: Nein, das geht nur in ausgereiften Programmiersprachen ;)

      Gruss
      Patrick

      --
      sh:( fo:| ch:? rl:( br:> n4:( ie:% mo:) va:} de:> zu:) fl:| ss:| ls:[ js:|
      1. Hello,

        Nein. Das geht nicht.
        Ich möchte erweitern auf: Nein, das geht nur in ausgereiften Programmiersprachen ;)

        *grins*

        Und könntest Du dann auch welche nennen und uns den Sinn mitteilen, der dem innen wohnen soll?
        Ich halte es für Unsinn, sich erst ein strukturiertes Ergebnis berechnen zu lassen, und dann nur einen einzigen Wert davon zu benutzen, vielleicht einen moment später das Ergebnis erneut berechnen zu lassen, um dann einen anderen Wert daraus zu verweden, usw.

        Und wenn es denn gar nicht anders geht, dann muss man sich eben einen Wrapper dafür bauen, der nur dieses eine Feld aus dem Ergebnis zurückliefert. Sinnvoller wird das dadurch aber auch nicht.

        Liebe Grüße aus Syburg bei Dortmund

        Tom vom Berg

        --
        Nur selber lernen macht schlau
        http://bergpost.annerschbarrich.de
        1. Hi,

          Und könntest Du dann auch welche nennen und uns den Sinn mitteilen, der dem innen wohnen soll?

          Nimm bspw. eine PHP-Funktion wie pathinfo - ich waere an einem bestimmten Teil der Rueckgabe interessiert, wuerde diesen also gern direkt nach der Rueckgabe adressieren - geht in PHP nicht.

          Ich halte es für Unsinn, sich erst ein strukturiertes Ergebnis berechnen zu lassen, und dann nur einen einzigen Wert davon zu benutzen, vielleicht einen moment später das Ergebnis erneut berechnen zu lassen, um dann einen anderen Wert daraus zu verweden, usw.

          Natuerlich waere das im Generellen unsinnig.
          Aber Sonderfaelle gibt's eben auch immer mal wieder, s.o.

          Und da kann PHP halt leider nicht anders als ueber Zwischenspeicherung in einer Variablen - "vernuenftige" Sprachen hingegen durchaus auch ohne.

          MfG ChrisB

          --
          „This is the author's opinion, not necessarily that of Starbucks.“
          1. Hello,

            Und das kann PHP halt leider nicht anders als ueber Zwischenspeicherung in einer Variablen - "vernuenftige" Sprachen hingegen durchaus auch ohne.

            Jetzt weiß ich aber immer noch nicht, was "vernünftige" Sprachen sind, die sowas können ;-)

            Liebe Grüße aus Syburg bei Dortmund

            Tom vom Berg

            --
            Nur selber lernen macht schlau
            http://bergpost.annerschbarrich.de
            1. echo $begrüßung;

              Und das kann PHP halt leider nicht anders als ueber Zwischenspeicherung in einer Variablen - "vernuenftige" Sprachen hingegen durchaus auch ohne.
              Jetzt weiß ich aber immer noch nicht, was "vernünftige" Sprachen sind, die sowas können ;-)

              Python beispielsweise. Aber auch bei PHP sieht das ganze schlimmer aus als es ist. Der von der Funktion zurückgegebene Variablencontainer bekommt durch die Zuweisung zu einer Variable lediglich einen weiteren Verweis. Es wird also nur ein Eintrag in der Variablentabelle angelegt, der auf die Stelle zeigt, an der der Rückgabewert bereits liegt. Ein Umkopieren an einen eigenen Speicherplatz findet bei PHP ja erst dann statt, wenn die Werte durch eine Änderung auseinanderlaufen.

              echo "$verabschiedung $name";

              1. Hello,

                Python beispielsweise. Aber auch bei PHP sieht das ganze schlimmer aus als es ist. Der von der Funktion zurückgegebene Variablencontainer bekommt durch die Zuweisung zu einer Variable lediglich einen weiteren Verweis. Es wird also nur ein Eintrag in der Variablentabelle angelegt, der auf die Stelle zeigt, an der der Rückgabewert bereits liegt. Ein Umkopieren an einen eigenen Speicherplatz findet bei PHP ja erst dann statt, wenn die Werte durch eine Änderung auseinanderlaufen.

                Die Frage ist dann also, wie lange dieser Speicherblock erhalten bleibt.

                Liebe Grüße aus Syburg bei Dortmund

                Tom vom Berg

                --
                Nur selber lernen macht schlau
                http://bergpost.annerschbarrich.de
                1. echo $begrüßung;

                  Der von der Funktion zurückgegebene Variablencontainer bekommt durch die Zuweisung zu einer Variable lediglich einen weiteren Verweis. Es wird also nur ein Eintrag in der Variablentabelle angelegt, der auf die Stelle zeigt, an der der Rückgabewert bereits liegt. Ein Umkopieren an einen eigenen Speicherplatz findet bei PHP ja erst dann statt, wenn die Werte durch eine Änderung auseinanderlaufen.

                  Die Frage ist dann also, wie lange dieser Speicherblock erhalten bleibt.

                  Nun, solange eine Referenz auf den Variablencontainer besteht. Mit unset() oder dem Zuweisen eines neuen Wertes an die Variable steht er wieder zur Verfügung. Eine andere Frage ist: wie relevant ist deine Frage, wird doch am Ende des Script sowieso alles aufgeräumt. In den meisten Wald- und Wiesen-Fällen dürfte es mehr Aufwand bedeuten, das unset() aufzurufen als einfach die Variable liegenzulassen und das Scriptende abzuwarten.

                  echo "$verabschiedung $name";

          2. Tach.

            Und könntest Du dann auch welche nennen und uns den Sinn mitteilen, der dem innen wohnen soll?

            Nimm bspw. eine PHP-Funktion wie pathinfo - ich waere an einem bestimmten Teil der Rueckgabe interessiert, wuerde diesen also gern direkt nach der Rueckgabe adressieren - geht in PHP nicht.

            Was spricht gegen dirname() und basename() für das gezielte Ermitteln der Informationen? Für die Extension gibt's vielleicht auch schon eine Funktion, hab ich aber gerade nicht im Kopf.

            --
            Wenn es schwingt, ist es ein Filter – Oszillatoren würden so etwas nie tun.
            1. Hi,

              Nimm bspw. eine PHP-Funktion wie pathinfo - ich waere an einem bestimmten Teil der Rueckgabe interessiert, wuerde diesen also gern direkt nach der Rueckgabe adressieren - geht in PHP nicht.

              Was spricht gegen dirname() und basename() für das gezielte Ermitteln der Informationen?

              Nichts, nicht unbedingt.
              Es war ein *Beispiel* ...

              MfG ChrisB

              --
              „This is the author's opinion, not necessarily that of Starbucks.“
              1. Tach.

                Was spricht gegen dirname() und basename() für das gezielte Ermitteln der Informationen?

                Nichts, nicht unbedingt.
                Es war ein *Beispiel* ...

                Das war mir schon klar, nur kein besonders gutes als Antwort auf die gestellte Frage, nämlich dem Sinn des Ganzen. Mit pathinfo() wird mehr berechnet als nötig (intern sogar mit den gleichen Funktionen wie dirname() und basename()), obwohl die gewünschte Info mit den Alternativen ganz gezielt ermittelt werden kann – PHP bringt ja eh für jeden Furz bereits eine Funktion mit. Vielleicht sogar, um das Fehlen des im OP angefragten Features zu kompensieren. ;)

                --
                Wenn es schwingt, ist es ein Filter – Oszillatoren würden so etwas nie tun.