【发布时间】:2014-06-03 07:49:35
【问题描述】:
好的,我知道什么是引用传递...我不需要解释。
假设您有一个通过引用接收参数的函数:
function foo(&$a){
$a = 1;
}
你叫它:
$a = 0;
foo($a); // Now $a is 1.
你可以做同样的事情传递值:
function foo($a){
$a = 1;
return $a;
}
你叫它:
$a = 0;
$a = foo($a); // Now $a is 1.
那么,引用传递的意义何在?
【问题讨论】:
-
一方面,如果你通过引用传递,你可以返回一个东西并仍然改变另一个,例如
preg_match(se1.php.net/preg_match)。 -
当您只有 1 个值要传递时,您的示例有效(因为函数最多只能返回 1 个值);如果您想从函数返回超过 1 个值作为输出而不需要创建元组怎么办?
-
这两点都很好。
-
第三点更微妙:使用引用通常更优雅,因为调用语法不同。而不是那个分配,你只需调用一个“做某事”的“例程”。举个例子:
validateOrReplace($document) -
哦,还有一点,这一点实际上非常重要:根据定义,引用不会复制值。当您考虑一个具有巨大内存占用的对象时,这可能是一个非常重要的细节,尤其是当这样一个对象被传递给多个函数时......
标签: php pass-by-reference pass-by-value