我应该如何在函数中返回多个变量(最佳实践)?

12 php micro-optimization

只是想知道这样的事情的最佳做法是什么:

一个返回多个变量的函数 - 如何返回这些变量?

像这样(全球化):

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)

编辑:在某些情况下,关联数组也非常合适.我无法想象性能差异是否值得失去清晰度.


Joh*_*auß 5

使用引用(如果有意义)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)

或者返回一个数组.

永远不要使用全球!这是非常糟糕的设计,不可维护.