4

将参数传递给函数时,如果函数不应该更改该参数的值,则约定是按值传递。仅当函数要修改该变量时,我们才传递 &byref。

另一方面,我们知道当按引用传递时,PHP 使用指针,而不是像按值传递那样复制变量的副本。

这在我的脑海中提出了一个问题,我们是否应该不时通过引用将某些变量传递给我们的函数以达到速度和效率的目的——即使我们不需要修改它们。

没有对这个想法发疯和完全滥用它,我想为我在这里谈论哪些变量或什么样的变量提供一个参考框架。

它们主要是 $dbh(数据库句柄)和非常大的变量。说实话,只是 $dbh 的!真的。

在您看来,您认为这是一种很好的做法,还是您认为它永远不应该被实践。

让我们把这个问题归结为一个代码片段并对此进行评论。

//假设$dbh是mysql连接的database_handle

for ($userID = 1; $userID <= 1000; $userID++) {

        display_name ($dbh,"users",$userID)// outputs the name of the passed userid 
}

在这里, display_name 函数应该按引用还是按值获取 $dbh?

4

2 回答 2

5

PHP 使用copy-on-write,这本质上意味着只要变量没有被修改,通过值传递它与通过引用传递它的效果相同。也就是说,在你描述的场景中使用引用不会有性能提升(其实有些报表引用会比较慢)

于 2012-08-27T18:13:20.960 回答
1

它们主要是 $dbh(数据库句柄)和非常大的变量。说实话,只是 $dbh 的!真的。

是什么让你觉得它很大?“句柄”通常表示类似指针(或指向指针的指针)之类的东西,非常小的东西。

于 2012-08-28T01:05:23.917 回答