Php 如何在函数中返回多个变量(最佳实践)?
我只是想知道这样的事情的最佳实践是什么: 一个返回多个变量的函数-如何返回这些变量 像这样(全球化): 或者类似这样(返回数组): 我做了一个性能测试,看起来使用阵列更快(刷新几次后):Php 如何在函数中返回多个变量(最佳实践)?,php,micro-optimization,Php,Micro Optimization,我只是想知道这样的事情的最佳实践是什么: 一个返回多个变量的函数-如何返回这些变量 像这样(全球化): 或者类似这样(返回数组): 我做了一个性能测试,看起来使用阵列更快(刷新几次后): 但是我很想知道对于这样的简单情况,哪种方法是最好的实践方法?从代码维护的角度来看,关联数组选项更好,因为您没有弄乱全局名称空间。也会让其他人更容易阅读您的代码。使用引用(如果有意义的话) 例如: function myfun(&$var1, &$var2, &$var3) { $
但是我很想知道对于这样的简单情况,哪种方法是最好的实践方法?从代码维护的角度来看,关联数组选项更好,因为您没有弄乱全局名称空间。也会让其他人更容易阅读您的代码。使用引用(如果有意义的话) 例如:
function myfun(&$var1, &$var2, &$var3)
{
$var1="foo";
$var2="foo";
$var3="foo";
}
或者返回一个数组
并且永远不要使用GLOBALS这是非常糟糕的设计,不可维护。您绝对应该返回一个数组。这更清楚。您甚至可以使用该构造来模拟多个返回值a-la python:
function foon() {
return array('one', 'two', 'three');
}
list($one, $two, $three) = foon();
编辑:在某些情况下,关联数组也是非常合适的。我无法想象性能上的差异会导致这种清晰度的损失。您可以返回一个数组并使用列表来获取值,请参阅
函数多重(){
返回数组('val1','anotherval');
}
列表($var1,$var2)=多个();
回显“$var1,$var2”;
对我来说很有效,我不知道这有多快,但也许在代码中看起来更干净。您可以使用类
因为这在谷歌上排名很高,而且我花了一段时间才找到一个清晰的答案来回答这么简单的问题 要给出完整答案并彻底阐明如何返回多个变量,这些变量实际上可以在函数之外独立使用:
function myFunction() {
//your code that returns your results to variables below
$var1 = 'message 1';
$var2 = 'message 2';
$var3 = 'message 3';
// must put all variables inside an array to get them outside of function
$return_array = ($var1, $var2, $var3);
// return your array inside function
return $return_array;
}
// call function (returns all variables in array)
$get_results = myFunction();
// call and assign individual variables outside of function
$var1 = $get_results[0];
$var2 = $get_results[1];
$var3 = $get_results[2];
// now you can use individual variables outside of function for example:
echo $var2; //will now output: message 2
echo $var3; //will now output: message 3
如果在函数中使用数据库查询的结果,则很可能需要将连接变量传递到函数中。例如,我们将说$db是我们的数据库连接,您只需修改下面的两行代码:
//original code to change
function myFunction() {
//change to
function myFunction($db) {
//original code to change
$get_results = myFunction();
//change to
$get_results = myFunction($db);
你是说阵列更快,对吗?5.999999999505E-6<2.09999999938E-5尽可能避免使用globals…因为爱所有神圣的事物,所以不要使用globals。它们是过去糟糕的PHP4时代留下的可悲的残余,在新代码中没有一席之地。我想我从来没有在
global
的同一句话中听到过“最佳实践”一词。。。谢谢你的笑声。不要测试微小的速度差异。测试以查看哪个更易于阅读和维护。想象一下,一个不熟悉代码的人必须理解并扩展代码。一年后,那个人可能就是你。嗯,我没那么快。。。我想首先测试我的代码,并且必须检查如何进行语法高亮显示——下次,也许。。。
function foon() {
return array('one', 'two', 'three');
}
list($one, $two, $three) = foon();
class Vari {
var $var1;
var $var2;
var $var3;
}
function myfun() {
$var = new Vari;
$var->var1="foo";
$var->var2="foo";
$var->var3="foo";
return $var;
}
$v = myfun();
echo $v->var1;
/*foo*/
function myFunction() {
//your code that returns your results to variables below
$var1 = 'message 1';
$var2 = 'message 2';
$var3 = 'message 3';
// must put all variables inside an array to get them outside of function
$return_array = ($var1, $var2, $var3);
// return your array inside function
return $return_array;
}
// call function (returns all variables in array)
$get_results = myFunction();
// call and assign individual variables outside of function
$var1 = $get_results[0];
$var2 = $get_results[1];
$var3 = $get_results[2];
// now you can use individual variables outside of function for example:
echo $var2; //will now output: message 2
echo $var3; //will now output: message 3
//original code to change
function myFunction() {
//change to
function myFunction($db) {
//original code to change
$get_results = myFunction();
//change to
$get_results = myFunction($db);