返回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