php 什么时候传引用,什么时候在PHP中使用传递引用?

以下内容不适用于对象,因为这里已经说明了。如果计划修改传递的值,则通过引用传递数组和标量值将只会节省内存,因为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标量值不应该通过引用传递,因为性能影响不能太大,以至于证明代码中透明度的损失。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值