在调用输出值的函数时是否可以返回两个值,例如,我有这个:
<?php
function ids($uid = 0, $sid = '')
{
$uid = 1;
$sid = md5(time());
return $uid;
return $sid;
}
echo ids();
?>
哪个会输出1
,我想选择输出的内容,例如ids($sid)
,但仍会输出1
。
甚至可能吗?
答案 0 :(得分:62)
您只能返回一个值。但您可以使用array本身包含其他两个值:
return array($uid, $sid);
然后您可以访问以下值:
$ids = ids();
echo $ids[0]; // uid
echo $ids[1]; // sid
您还可以使用关联数组:
return array('uid' => $uid, 'sid' => $sid);
访问它:
$ids = ids();
echo $ids['uid'];
echo $ids['sid'];
答案 1 :(得分:19)
如果需要返回多个值,则返回数组或对象。例如:
function foo() {
return array(3, 'joe');
}
$data = foo();
$id = $data[0];
$username = $data[1];
// or:
list($id, $username) = foo();
答案 2 :(得分:13)
您可以使用数组和list函数轻松获取信息:
function multi($a,$b) {
return array($a,$b);
}
list($first,$second) = multi(1,2);
我希望这会对你有所帮助
杰罗姆
答案 3 :(得分: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 />';
答案 4 :(得分:4)
许多可能性:
// 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;
答案 5 :(得分:2)
return array('uid' => $uid, 'sid' => $sid);
然后像
一样访问它$dinga = ids();
extract($dinga);
extract将使uid和sid变量。那么你可以使用$ uid和$ sid。
答案 6 :(得分:2)
通过引用传递将是一种解决方案。 这样你:
像往常一样返回一个值
并修改第二个(通过参考函数传递的那个)
一个例子:
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