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}所以我正在创造更多无用的变量
那么没有数组就可以这样做吗?
答案 0 :(得分:2)
从根本上说,函数只有一个返回值。您可以返回包含成员变量first
和second
的类,或者包含键"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)
避免返回数组的唯一选择是返回一个对象或序列化数据,但是你不会从中“获胜”。