以下内容不适用于对象,因为这里已经说明了。如果计划修改传递的值,则通过引用传递数组和标量值将只会节省内存,因为PHP使用了更改时复制(copy-on-change)策略。例如:
# $array will not be copied, because it is not modified.
function foo($array) {
echo $array[0];
}
# $array will be copied, because it is modified.
function bar($array) {
$array[0] += 1;
echo $array[0] + $array[1];
}
# This is how bar shoudl've been implemented in the first place.
function baz($array) {
$temp = $array[0] + 1;
echo $temp + $array[1];
}
# This would also work (passing the array by reference), but has a serious
#side-effect which you may not want, but $array is not copied here.
function foobar(&$array) {
$array[0] += 1;
echo $array[0] + $array[1];
}
总结:
>如果你在一个非常大的数组上工作,并计划在一个函数内修改它,你实际应该使用一个引用,以防止它被复制,这可能严重降低性能,甚至耗尽你的内存限制。>如果它是可以避免的(那是小数组或标量值),我总是使用没有副作用的函数式方法,因为只要你通过引用传递的东西,你永远不能确定传递的变量保持函数调用后,有时可能导致讨厌和难以找到的错误。> IMHO标量值不应该通过引用传递,因为性能影响不能太大,以至于证明代码中透明度的损失。