hasp: Rückgabe aus Funktion mittels RETURN von zwei Werten

Hi,
ich steh' am Schlauch, ich wollte eigentlich nur auf die Schnelle eine Funktion schreiben, die zwei Integer Werte zurückgibt. Ich möchte diese beiden aber nicht in ein Array oder Hash packen.

Vorgeschwebt ist mir das ganze in etwa so:

function abc ($def)
{
 ...
 return $id,$errCode;
}

mit dem Aufruf:
$id,$errCode = abc("sepp");

Warum das ganze?
(in $id wird eine id gespeichert oder false zurückgegeben, in $errCode soll ein optionaler FehlerCode zurück kommen)
Anschliesend käme demnach der Aufruf:

if ( !($id) )
{
 ...
 fehlerbehandlung($errCode);
 ...
}

kann mir jemand helfen? Danke !

  1. Nabend,

    Warum das ganze?

    Genau, denn du kannst deine Funktion doch einfach TRUE zurückliefern lassen wenn alles ok ist und sonst eine Fehlerinfo. Die Abfrage wäre dann in etwa:

    if ($id !== TRUE)
    {
     ...
     fehlerbehandlung($errCode);
     ...
    }

    Denn so wie du das willst... nein, das ist AFAIK nicht wirklich möglich. Du könntest dir, wenn du auf das Array verzichten willst, einen String basteln, der zB mit 0 oder 1 beginnt und dann die Fehlerinfo enthält. Aber da ist die og. Lösung doch einfacher/besser.

    Bis denne,

    1. danke aber JEIN ...
      soweit war ich auch, aber ich möchte im geglückten Fall in $id nicht TRUE stehen haben, sondern halt eine ID ... ;-)

      bis dann

  2. Hallo hasp,

    ich steh' am Schlauch, ich wollte eigentlich nur auf die Schnelle eine Funktion schreiben, die zwei Integer Werte zurückgibt. Ich möchte diese beiden aber nicht in ein Array oder Hash packen.

    es geht aber nicht anders...

    aber vielleicht hilft sowas:

    function abc($str){
      //...
      $rueckgabe = array($id, $errCode);
      return $rueckgabe
    }
    list($id,$errCode) = abc('...');

    Dann hast du die Variablen $id und $errCode zur Verfügung.

    Grüße aus Nürnberg
    Tobias

    --
    Selfcode: sh:( fo:) ch:? rl:( br:< n4:& ie:% mo:| va:) de:] zu:) fl:( ss:| ls:[ js:|
  3. Moin!

    ich steh' am Schlauch, ich wollte eigentlich nur auf die Schnelle eine Funktion schreiben, die zwei Integer Werte zurückgibt. Ich möchte diese beiden aber nicht in ein Array oder Hash packen.

    return kann aber nur einen Wert zurückgeben. Das ist halt so definiert. Wobei der Wert eben nicht nur ein Integer oder String sein kann, sondern auch Array oder Objekt - und dann eben auch mehrere grundlegende Variablen zurückgeben kann.

    Wenn du also nur return verwenden willst, kommst du um ein Array nicht herum.

    Alternativ kannst du der Funktion auch eine Variablenreferenz übergeben:

    function abc ($def, &$id)
    {
      if (alles_ok)
      {
        blah;
        $id = "ermittelte_id";
        return true;
      }
      else
      {
        $id = errorcode;
        return false;
      }
    }

    if (abc("def-wert",$id))
    {
      // $id hat hier die ID
    }
    else
    {
      // $id hat hier den errorcode
    }

    - Sven Rautenberg

    --
    Die SelfHTML-Developer sagen Dankeschön für aktuell 20885,68 Euro Spendengelder!
  4. DANKE ...

    ich hab's eingesehen ... schade ... aslo doch ein ARRAY ... na gut ...

    Danke

    hasp