有可能有一个函数有两个返回值,像这样:
function test($testvar)
{
// Do something
return $var1;
return $var2;
}
如果是这样,我怎样才能分别得到每一个回报?
有可能有一个函数有两个返回值,像这样:
function test($testvar)
{
// Do something
return $var1;
return $var2;
}
如果是这样,我怎样才能分别得到每一个回报?
当前回答
我想eligo已经解释得很清楚了。但如果你想返回两个值,把它们放到一个数组中并返回。
function test($testvar)
{
// do something
return array('var1'=>$var1,'var2'=>$var2);
//defining a key would be better some times
}
//访问返回值
$returned_values = test($testvar);
echo $returned_values['var1'];
echo $returned_values['var2'];
其他回答
可以从一个函数返回多个数组和标量
function x()
{
$a=array("a","b","c");
$b=array("e","f");
return array('x',$a,$b);
}
list ($m,$n,$o)=x();
echo $m."\n";
print_r($n);
print_r($o);
答案是否定的。当解析器到达第一个return语句时,它将把控制转回调用函数—您的第二个return语句将永远不会执行。
从PHP 7.1开始,我们对列表进行了适当的解构。 因此你可以这样做:
$test = [1, 2, 3, 4];
[$a, $b, $c, $d] = $test;
echo($a);
> 1
echo($d);
> 4
在函数中是这样的:
function multiple_return() {
return ['this', 'is', 'a', 'test'];
}
[$first, $second, $third, $fourth] = multiple_return();
echo($first);
> this
echo($fourth);
> test
解构是一个非常强大的工具。它也能够解构key=>值对:
["a" => $a, "b" => $b, "c" => $c] = ["a" => 1, "b" => 2, "c" => 3];
看看PHP 7.1的新特性页面:
新功能
允许多次返回的语言通常只是将多个值转换为一个数据结构。
例如,在Python中,您可以返回多个值。但是,它们实际上只是作为一个元组返回。
你可以在PHP中返回多个值只需创建一个简单数组并返回。
像这样使用全局变量:
<?php
function t($a)
{
global $add, $noadd;
$add=$a+$a;
$noadd=$a;
}
$a=1;
t($a);
echo $noadd." ".$add;
?>
这将回显12