Возврат 2 значений из функции
Можно ли вернуть два значения при вызове функции, которая выводит значения, например, у меня есть это:
<?php
function ids($uid = 0, $sid = '')
{
$uid = 1;
$sid = md5(time());
return $uid;
return $sid;
}
echo ids();
?>
Что будет выводить 1
, я хочу выбрать, что делать, например. ids($sid)
, но он все равно будет выводить 1
.
Возможно ли это?
Ответы
Ответ 1
Вы можете вернуть только одно значение. Но вы можете использовать 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'];
Ответ 2
Возвращает массив или объект, если вам нужно вернуть несколько значений. Например:
function foo() {
return array(3, 'joe');
}
$data = foo();
$id = $data[0];
$username = $data[1];
// or:
list($id, $username) = foo();
Ответ 3
Вы можете использовать массив и функцию списка, чтобы легко получить информацию:
function multi($a,$b) {
return array($a,$b);
}
list($first,$second) = multi(1,2);
Я надеюсь, что это поможет вам
Иероним
Ответ 4
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 />';
Ответ 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;
Ответ 6
return array('uid' => $uid, 'sid' => $sid);
а затем получить доступ к нему как
$dinga = ids();
extract($dinga);
extract будет отображать переменную uid и sid. Итак, вы можете использовать $uid и $sid.
Ответ 7
Передача по ссылке будет решением.
Таким образом, вы:
-
вернуть значение, как обычно,
-
и измените второй (тот, который был передан с помощью функции 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