只是想知道这样的事情的最佳做法是什么:
一个返回多个变量的函数 - 如何返回这些变量?
像这样(全球化):
function myfun(){
global $var1,$var2,$var3;
$var1="foo";
$var2="foo";
$var3="foo";
}//end of function
Run Code Online (Sandbox Code Playgroud)
或者像这样(返回一个数组):
function myfun(){
$var1="foo";
$var2="foo";
$var3="foo";
$ret_var=array("var1"=>$var1,"var2"=>$var2,"var3"=>$var3);
return $ret_var;
}//end of function
Run Code Online (Sandbox Code Playgroud)
我做了性能测试,看起来使用数组更快(刷新几次后):
array took: 5.9999999999505E-6
global took: 2.0999999999938E-5
Run Code Online (Sandbox Code Playgroud)
但我很想知道哪种方法最适合这种简单的情况?
Exp*_*lls 19
你绝对应该返回一个数组.它更加清晰.您甚至可以使用该list构造来模拟多个返回值a-la python:
function foon() {
return array('one', 'two', 'three');
}
list($one, $two, $three) = foon();
Run Code Online (Sandbox Code Playgroud)
编辑:在某些情况下,关联数组也非常合适.我无法想象性能差异是否值得失去清晰度.
使用引用(如果有意义)http://de.php.net/manual/en/language.references.php
例:
function myfun(&$var1, &$var2, &$var3)
{
$var1="foo";
$var2="foo";
$var3="foo";
}
Run Code Online (Sandbox Code Playgroud)
或者返回一个数组.
永远不要使用全球!这是非常糟糕的设计,不可维护.