返回2个值是否有可能返回两个值调用,将输出的值,例如,我有这样的一个函数:从功能
<?php
function ids($uid = 0, $sid = '')
{
$uid = 1;
$sid = md5(time());
return $uid;
return $sid;
}
echo ids();
?>
将输出1
,我想选什么输出,例如ids($sid)
,但仍会输出1
。
这有可能吗?
返回2个值是否有可能返回两个值调用,将输出的值,例如,我有这样的一个函数:从功能
<?php
function ids($uid = 0, $sid = '')
{
$uid = 1;
$sid = md5(time());
return $uid;
return $sid;
}
echo ids();
?>
将输出1
,我想选什么输出,例如ids($sid)
,但仍会输出1
。
这有可能吗?
您只能返回一个值。
return array($uid, $sid);
那么你访问喜欢的价值观:
$ids = ids();
echo $ids[0]; // uid
echo $ids[1]; // sid
你也可以使用一个关联数组:
return array('uid' => $uid, 'sid' => $sid);
但是,这本身就包含着另外两个值,你可以使用一个array并访问它:
$ids = ids();
echo $ids['uid'];
echo $ids['sid'];
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 />';
如果需要返回多个值,则返回一个数组或对象。例如:
function foo() {
return array(3, 'joe');
}
$data = foo();
$id = $data[0];
$username = $data[1];
// or:
list($id, $username) = foo();
+1用于暗示物体作为替代物,增加语义。但是,在时间紧急的情况下,阵列可能会稍微快一点(如果有疑问,基准确定)。 – Archimedix 2010-09-28 17:17:03
你可以使用一个数组和列表功能,以获得轻松的信息:
function multi($a,$b) {
return array($a,$b);
}
list($first,$second) = multi(1,2);
我希望这将有助于你
杰罗姆
这应该是被接受的答案,因为在这里你返回几个变量,你可以直接访问它们而不需要“访问”数组。 – Sw0ut 2016-01-20 08:36:27
很多可能性:
// 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;
我认为通过参考更好地分配......但这可能是危险的! – 2010-09-28 17:39:43
return array('uid' => $uid, 'sid' => $sid);
,然后访问它像
$dinga = ids();
extract($dinga);
extract将uid和SID变量。那么你可以使用$ uid和$ sid。
这是另一种选择。 – user2029015 2013-06-12 11:59:00
通过参考将是一个解决方案。 这样你:
返回的值即可正常
和修改第二( - 一个通过REFFERENCE传递给函数)
一个例子:
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
这将输出'阵列' – MacMac 2010-09-28 17:06:50
@YouBook:你需要改变的方式哟你也处理返回值。 – Gumbo 2010-09-28 17:09:34
啊,我的错误,没有读你的编辑。无论如何,很好的答案。 :) *等到我可以接受这个* – MacMac 2010-09-28 17:11:03