有可能有一个函数有两个返回值,像这样:

function test($testvar)
{
  // Do something

  return $var1;
  return $var2;
}

如果是这样,我怎样才能分别得到每一个回报?


当前回答

上面的绿色勾号给出的答案实际上是不正确的。如果返回一个数组,则可以在PHP中返回多个值。请看下面的示例代码:

<?php

function small_numbers()
{
    return array (0, 1, 2);
}

list ($zero, $one, $two) = small_numbers();

这段代码实际上是从PHP网站上的以下页面复制的:http://php.net/manual/en/functions.returning-values.php 我自己也使用过很多次相同类型的代码,所以可以确认它是好的,它可以工作。

其他回答

对于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的,否则你应该使用一个具有所需属性的对象。

或者你可以通过引用传递:

function byRef($x, &$a, &$b)
{
    $a = 10 * $x;
    $b = 100 * $x;
}

$a = 0;
$b = 0;

byRef(10, $a, $b);

echo $a . "\n";
echo $b;

这将输出

100
1000

允许多次返回的语言通常只是将多个值转换为一个数据结构。

例如,在Python中,您可以返回多个值。但是,它们实际上只是作为一个元组返回。

你可以在PHP中返回多个值只需创建一个简单数组并返回。

你总是只能返回一个变量,它可能是一个数组。但是你可以在函数内部修改全局变量。大多数时候,这不是很好的风格,但它是有效的。在类中,您通常从函数内部更改类变量而不返回它们。

我想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'];