有可能有一个函数有两个返回值,像这样:
function test($testvar)
{
// Do something
return $var1;
return $var2;
}
如果是这样,我怎样才能分别得到每一个回报?
有可能有一个函数有两个返回值,像这样:
function test($testvar)
{
// Do something
return $var1;
return $var2;
}
如果是这样,我怎样才能分别得到每一个回报?
当前回答
它不可能有两个返回语句。然而,它不会抛出错误,但当函数被调用时,你只会收到第一个返回语句值。 我们可以使用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) {
return array($var1, $var2);
}
$result = test($testvar);
echo $result[0]; // $var1
echo $result[1]; // $var2
我知道我迟到了,但是有一个很好的简单的解决方法。 使用解构可以一次返回多个值。
function test()
{
return [ 'model' => 'someValue' , 'data' => 'someothervalue'];
}
现在你可以用这个
$result = test();
extract($result);
Extract为数组中的每个成员创建一个变量,以该成员命名。因此,您现在可以访问$model和$data
答案是否定的。当解析器到达第一个return语句时,它将把控制转回调用函数—您的第二个return语句将永远不会执行。
PHP 7.1更新
返回一个数组。
function test($testvar)
{
// Do something
return [$var1, $var2];
}
然后像下面这样使用:
[$value1, $value2] = test($testvar);
PHP中的函数只能返回一个变量。你可以使用全局作用域的变量,你可以返回数组,或者你可以通过引用传递变量给函数,然后改变值。但所有这些都会降低代码的可读性。 我建议你研究一下课程。