有可能有一个函数有两个返回值,像这样:
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 7.1.0以后,你可以使用新的语法(而不是list函数):
/**
* @return array [foo, bar]
*/
function getFooAndBar(): array {
return ['foo', 'bar'];
}
[$foo, $bar] = getFooAndBar();
print 'Hello '. $foo . ' and ' . $bar;
如果你想返回2-3个变量,这对我来说是OK的,否则你应该使用一个具有所需属性的对象。
像这样使用全局变量:
<?php
function t($a)
{
global $add, $noadd;
$add=$a+$a;
$noadd=$a;
}
$a=1;
t($a);
echo $noadd." ".$add;
?>
这将回显12
我想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'];
从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的新特性页面:
新功能
在数组中添加所有变量,然后最终返回数组。
function test($testvar)
{
// do something
return array("var1" => $var1, "var2" => @var2);
}
然后
$myTest = test($myTestVar);
//$myTest["var1"] and $myTest["var2"] will be usable