将两个值作为函数返回到php中的两个不同变量

时间:2011-09-11 12:39:45

标签: php function

function foo($a)
{
    $b = ...;
    $c = ...;
    return (both b and c);
}

所以我可以将$b值提升为$first,将$c值提升为$second

我知道您可以在return array($b,$c)之前返回1个以上的变量,但它应该是$var[0]$var[1]然后我需要输入$first = $var[0]和{{1}所以我正在创造更多无用的变量

那么没有数组就可以这样做吗?

4 个答案:

答案 0 :(得分:2)

从根本上说,函数只有一个返回值。您可以返回包含成员变量firstsecond的类,或者包含键"first""second"的关联数组,但您仍然只返回单个对象。 *

或者,您可以在函数中引用$first$second

function foo($a, &$b, &$c)
{
    $b = ...;
    $c = ...;
}

foo(42, $first, $second);

我不是这种方法的忠实粉丝,因为调用网站并未立即明确$first$second将会被修改。

*请注意,如果您返回一个数组,则始终可以使用简写list($first,$second) = foo(42);

答案 1 :(得分:2)

不,它不能。

但你仍然可以从函数返回一个数组,但是使用“list”来接受结果是为了方便:

list ($first, $second) = foo ($a);

答案 2 :(得分:1)

不,你不能那样。函数只返回一个结果。

如果可能,您可以做的是通过引用传递变量。

function foo($a, &$b, &$c){
 $b = ...;
 $c = ...;
}

以下内容将对功能范围之外的$ b和$ c进行更改。

答案 3 :(得分:0)

避免返回数组的唯一选择是返回一个对象或序列化数据,但是你不会从中“获胜”。