lvl: 2 Werte aus Funktion übergeben.

Hallo liebe selfhtml Gemeinde.

Ich habe eine Funktion:

function test($a1, $a2, $a3)
{
$e1 = $a1 + 3;

$e2 = $a2 + $a3;

Return ???
}

So nun meine Frage:
Ich möchte aus dieser Funktion $e1 und $e2 auslesen, aller dings als Variable.

Quellcode weiter:

$e1 = test(1, 2, 3);
$e2 = test(1, 2, 3);

oder wie funktioniert das?

Unter PHP.net hab ich leider kein Ergebnis auf meine Suche gefunden und mein "schlaues PHP Buch" habe ich nicht bei mir.

MfG lvl

  1. Liebe(r) lvl,

    function test($a1, $a2, $a3)
    {
    $e1 = $a1 + 3;

    $e2 = $a2 + $a3;

    // Return ???

    return array("e1" => $e1, "e2" => $e2);

    }

    Quellcode weiter:

    $ergebnis = test(1, 2, 3);
      $e1 = $ergebnis["e1"];
      $e2 = $ergebnis["e2"];

    oder wie funktioniert das?

    s.o.

    Liebe Grüße aus Ellwangen,

    Felix Riesterer.

    1. return array("e1" => $e1, "e2" => $e2);

      Ja ich habs mir fast gedacht. Leider kam die erläuchtung in diese Richtung zu denken nach meinem Post.

      Also Danke. ;)

      PS. lvl = Lieber :D

    2. Quellcode weiter:
        $ergebnis = test(1, 2, 3);
        $e1 = $ergebnis["e1"];
        $e2 = $ergebnis["e2"];

      Vielleicht sollte man noch erwähnen, dass man mit

      list($e1, $e2) = test(1, 2, 3);

      die Ergebniswerte recht elegant zuweisen kann.

      Grüße,
      lucien

  2. Hallo,
    Bau doch $e1 und $e2 in ein assoziatives Array und gib das mit return zurück:

    function test($a1, $a2, $a3)
    {
    $e1 = $a1 + 3;

    $e2 = $a2 + $a3;

    $resultVec = array("e1" => $e1, "e2" => $e2);
    return ($resultVec);
    }

    $rv = test(1,2,3),
    $e1 = $rv["e1"];
    $e2 = $rv["e2"];

    Gruesse,
    Joerg

  3. Hallo lvl,

    Ich habe eine Funktion:

    function test($a1, $a2, $a3)
    {
    $e1 = $a1 + 3;

    $e2 = $a2 + $a3;

    $arr_return = array();
    $arr_return[0] = $e1;
    $arr_return[1] = $e2;

    return $arr_return;

    }

    Schönen Gruß aus München

    die knappschaft

    --
    sh:(  fo:|  ch:?  rl:°  br:$,<,>  n4:&  ie:|  mo:|  va:)  de:]  zu:)  fl:|  ss:|  ls:[,#
  4. Hallo,

    nee, eine Funktion bzw. Methode liefert genau einen Wert zurück.
    Allerdings kann eine Funktion/Methode auch Nebeneffekte haben, zum Beispiel globale Variablen oder Eigenschaften der aktuellen Klasseninstanz verändern.

    Für Dein Beispiel ist es aber vielleicht das Einfachste und Sauberst, einfach Deine Ergebnisse als Array zurückzugeben.

    function foo(a, b) {
      results = array();
      results[0] = a + b;
      results[1] = a * b;
      return results;
    }

    bar = foo(2, 5);

    echo bar[0].'<br />';
    echo bar[1].'<br />';

    Ciao,
    Andreas

    --
    "Das Corporate Design für das Internet sieht eine Reihe von Grafikelementen vor, die die Optik der Webseite visuell und funktionell beeinflussen." - (Zitat aus dem "Styleguide Corporate Design"  eines großen Konzerns...)
    1. Hallo,

      boah - bin ich langsam...
      ;)

      Ciao,
      Andreas

      --
      "Das Corporate Design für das Internet sieht eine Reihe von Grafikelementen vor, die die Optik der Webseite visuell und funktionell beeinflussen." - (Zitat aus dem "Styleguide Corporate Design"  eines großen Konzerns...)
      1. exzellentes Buch übrigens :)