有可能有一个函数有两个返回值,像这样:
function test($testvar)
{
// Do something
return $var1;
return $var2;
}
如果是这样,我怎样才能分别得到每一个回报?
有可能有一个函数有两个返回值,像这样:
function test($testvar)
{
// Do something
return $var1;
return $var2;
}
如果是这样,我怎样才能分别得到每一个回报?
当前回答
你可以通过引用来设置两个或多个变量的值:
function t(&$a, &$b) {
$a = 1;
$b = 2;
}
t($a, $b);
echo $a . ' ' . $b;
输出:
1 2
其他回答
这是最简单的方法:
public function selectAllUsersByRole($userRole, $selector) {
$this->userRole = $userLevel;
$this->selector = $selector;
$sql = "SELECT * FROM users WHERE role <= ? AND del_stat = 0";
$stm = $this->connect()->prepare($sql); // Connect function in Dbh connect to database file
$stm->execute([$this->userRole]); // This is PHP 7. Use array($this->userRole) for PHP 5
$usersIdArray = array();
$usersFNameArray = array();
$usersLNameArray = array();
if($stm->rowCount()) {
while($row = $stm->fetch()) {
array_push($usersIdArray, $row['id']);
array_push($usersFNameArray, $row['f_name']);
array_push($usersLNameArray, $row['l_name']);
// You can return only $row['id'] or f_name or ...
// I used the array because it's most used.
}
}
if($this->selector == 1) {
return $usersIdArray;
}elseif($this->selector == 2) {
return $usersFNameArray;
}elseif($this->selector == 3) {
return $usersLNameArray;
}
}
我们如何调用这个函数呢?
$idData = $selectAllUsers->selectAllUsersByLevel($userRole, 0);
print_r($idData);
$idFName = $selectAllUsers->selectAllUsersByLevel($userRole, 1);
print_r($idFname);
就是这样。非常容易。
它不可能有两个返回语句。然而,它不会抛出错误,但当函数被调用时,你只会收到第一个返回语句值。 我们可以使用return of array来获取多个返回值。例如:
function test($testvar)
{
// do something
//just assigning a string for example, we can assign any operation result
$var1 = "result1";
$var2 = "result2";
return array('value1' => $var1, 'value2' => $var2);
}
PHP中的函数只能返回一个变量。你可以使用全局作用域的变量,你可以返回数组,或者你可以通过引用传递变量给函数,然后改变值。但所有这些都会降低代码的可读性。 我建议你研究一下课程。
在数组中添加所有变量,然后最终返回数组。
function test($testvar)
{
// do something
return array("var1" => $var1, "var2" => @var2);
}
然后
$myTest = test($myTestVar);
//$myTest["var1"] and $myTest["var2"] will be usable
有些人可能更喜欢返回多个值作为对象:
function test() {
$object = new stdClass();
$object->x = 'value 1';
$object->y = 'value 2';
return $object;
}
像这样叫它:
echo test()->x;
Or:
$test = test();
echo $test->y;