从函数返回2个值

Mac*_*Mac 32 php function return-value

在调用输出值的函数时是否可以返回两个值,例如,我有:

<?php

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

    return $uid;
    return $sid;    
}

echo ids();

?>
Run Code Online (Sandbox Code Playgroud)

哪个会输出1,我想选择输出什么,例如ids($sid),但它仍然会输出1.

它甚至可能吗?

Gum*_*mbo 64

您只能返回一个值.但是您可以使用一个本身包含其他两个值的数组:

return array($uid, $sid);
Run Code Online (Sandbox Code Playgroud)

然后你访问如下的值:

$ids = ids();
echo $ids[0];  // uid
echo $ids[1];  // sid
Run Code Online (Sandbox Code Playgroud)

您还可以使用关联数组:

return array('uid' => $uid, 'sid' => $sid);
Run Code Online (Sandbox Code Playgroud)

并访问它:

$ids = ids();
echo $ids['uid'];
echo $ids['sid'];
Run Code Online (Sandbox Code Playgroud)

  • @YouBook,请在下面的答案中查看`list`.非常方便的功能. (4认同)
  • 那将输出`Array` (2认同)
  • @YouBook:您还需要更改处理返回值的方式. (2认同)

Ann*_*rom 19

如果需要返回多个值,则返回数组或对象.例如:

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

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

// or:
list($id, $username) = foo();
Run Code Online (Sandbox Code Playgroud)

  • +1用于暗示对象作为替代,添加语义含义.但是,在时间紧迫的情况下,阵列可能会更快一点(如果有疑问,基准测试只是为了确定). (2认同)

Jer*_*NER 15

您可以使用数组和列表函数轻松获取信息:

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

list($first,$second) = multi(1,2);
Run Code Online (Sandbox Code Playgroud)

我希望这能帮到您

杰罗姆


Mar*_*ker 6

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 />';
Run Code Online (Sandbox Code Playgroud)


Nik*_*kiC 5

多种可能性:

// 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;
Run Code Online (Sandbox Code Playgroud)