php 5.4不支持引用变量,PHP 5.4调用时间传递引用 - 可以轻松修复?

PHP和引用有点不直观。如果使用得当,在适当的位置引用可以提供大的性能改进或避免非常丑陋的变通方法和不寻常的代码。

以下将产生错误:function f(&$v){$v = true;}

f(&$v);

function f($v){$v = true;}

f(&$v);

这些都不会失败,因为他们可以遵循以下规则,但毫无疑问已被删除或禁用,以防止许多遗留混乱。

如果它们确实有效,则两者都涉及冗余转换到引用,第二个也涉及冗余转换回范围包含的变量。

第二个过去可能允许将引用传递给不适用于引用的代码。这对于可维护性来说非常难看。

这无济于事:function f($v){$v = true;}

$r = &$v;

f($r);

更具体地说,它将引用转回到正常变量,因为您没有要求引用。

这将有效:function f(&$v){$v = true;}

f($v);

这会看到您传递的是非引用但需要引用,因此将其转换为引用。

这意味着你不能将引用传递给一个函数,在这个函数中没有明确要求引用使它成为PHP严格传递类型的少数领域之一,或者在这种情况下更多的是元类型。

如果您需要更多动态行为,这将起作用:function f(&$v){$v = true;}

$v = array(false,false,false);

$r = &$v[1];

f($r);

在这里,它看到你想要一个引用并且已经有一个引用,所以不管它。它也可能链接参考但我怀疑这一点。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值