一尘不染

何时在PHP中通过引用传递

php

我想知道在您仅读取变量时是否将其作为按引用传递的优良作法,还是应始终将其作为值传递。

引用传递示例:

$a = 'fish and chips';
$b = do_my_hash($a);
echo $b;

function &do_my_hash(&$value){
   return md5($value);
}

传递值的示例:

$a = 'fish and chips';
$b = do_my_hash($a);
echo $b;

function do_my_hash($value){
   return md5($value);
}

哪个更好 ?例如,如果我要循环运行1000次?

循环示例:

for($i = 0 ; $i < 1000 ; $i++){
   $a = 'Fish & Chips '.$i;
   echo do_my_hash($a);
}

阅读 256

收藏
2020-05-29

共1个答案

一尘不染

如果您打算传递一个 (因此该函数不会对其进行修改) ,则没有理由通过引用传递它:这只会使您的代码更难以理解,因为人们会认为“
此函数可以修改我将要修改的内容。传递给它-哦,它没有修改?

在您提供的示例中,do_my_hash函数不会修改传递给它的 ;因此,我不会使用参考。

人们使用引用的另一个原因是因为他们认为引用可以使代码更快。但这是错误的。更糟糕的是:引用通常会使代码变慢!是的,引用通常会使代码变慢-
抱歉,我只需要重复一遍就可以使代码更清楚。

实际上,即使您不主要关注性能,这篇文章也可能是有趣的文章;-)

2020-05-29