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