wake-up-neo.com

Rückgabe von 2 Werten aus einer Funktion

Ist es möglich, zwei Werte zurückzugeben, wenn eine Funktion aufgerufen wird, die die Werte ausgibt? Ich habe beispielsweise Folgendes:

<?php

function ids($uid = 0, $sid = '')
{
    $uid = 1;
    $sid = md5(time());

    return $uid;
    return $sid;    
}

echo ids();

?>

Welches 1 Ausgibt, möchte ich auswählen, was ausgegeben werden soll, z. ids($sid), aber es wird immer noch 1 ausgegeben.

Ist es überhaupt möglich?

31
MacMac

Sie können nur einen Wert zurückgeben. Sie können jedoch ein Array verwenden, das selbst die beiden anderen Werte enthält:

return array($uid, $sid);

Dann greifen Sie auf folgende Werte zu:

$ids = ids();
echo $ids[0];  // uid
echo $ids[1];  // sid

Sie können auch ein assoziatives Array verwenden:

return array('uid' => $uid, 'sid' => $sid);

Und darauf zugreifen:

$ids = ids();
echo $ids['uid'];
echo $ids['sid'];
63
Gumbo

Geben Sie ein Array oder ein Objekt zurück, wenn Sie mehrere Werte zurückgeben müssen. Beispielsweise:

function foo() {
    return array(3, 'joe');
}

$data = foo();
$id = $data[0];
$username = $data[1];

// or:
list($id, $username) = foo();
19

Sie können ein Array und die Listenfunktion verwenden, um die Informationen einfach abzurufen:

function multi($a,$b) {
   return array($a,$b);
}

list($first,$second) = multi(1,2);

Ich hoffe, dies wird dir helfen

Hieronymus

14
Jerome WAGNER
function ids($uid = 0, $sid = '') 
{ 
    $uid = 1; 
    $sid = md5(time()); 

    return array('uid' => $uid,
                 'sid' => $sid
                );     
} 

$t = ids(); 
echo $t['uid'],'<br />';
echo $t['sid'],'<br />';
6
Mark Baker

Viele Möglichkeiten:

// return array
function f() {
    return array($uid, $sid);
}
list($uid, $sid) = f();
$uid;
$sid;

// return object
function f() {
    $obj = new stdClass;
    $obj->uid = $uid;
    $obj->sid = $sid;
    return $obj;
}
$obj->uid;
$obj->sid;

// assign by reference
function f(&$uid, &$sid) {
    $uid = '...';
    $sid = '...';
}
f($uid, $sid);
$uid;
$sid;
4
NikiC
return array('uid' => $uid, 'sid' => $sid);

und dann darauf zugreifen wie

$dinga = ids();
extract($dinga);

extract macht uid und sid variabel. Dann können Sie $ uid und $ sid verwenden.

2
user2029015

Referenzübergabe wäre eine Lösung. Auf diese Weise können Sie:

  • geben Sie einen Wert wie gewohnt zurück

  • und ändern Sie die Sekunde (diejenige, die als Referenz auf die Funktion übergeben wurde)

Ein Beispiel:

function foo(&$var) // notice the & in front of the parameter passed
{
    $var++;
    return 1;
}

$a=5;
echo foo($a);
// echoes 1, the returned value
echo $a;
// $a is now 6
2