PHP参数传递之引用传递及错误Fatal error: Call-time pass-by-reference has been removed解决办法

在使用PHP按引用传递时,可能会出现下面这样的错误:

Fatal error: Call-time pass-by-reference has been removed in /Users/admin/Sites/HelloPHP/classes/DBConn.php on line 17

出现这样的错误是因为错误的引用传递导致的。先看看别人提供的解决办法:

一、php.ini配置问题

查看你的php.ini配置文件,把其中的 allow_call_time_pass_reference参数调整为true,并重启服务器试试。

二、不正确的引用传递

据说是因为PHP升级到了5.4才出现了这样的问题。

我们都知道,当我们定义了一个方法时,默认情况下是按值传递,比如下面代码:

$str = "XCoder Studio";
 
function foo($str) {
    $str = "Qiu Tu";
}
foo($str);
 
echo $str;

输入结果为“XCoder Studio”,这是常见的按值传递。如果我们将foo函数改为下面这样:

function foo(&$str) {
    $str = "Qiu Tu";
}

就是在函数参数前加上一个“&”符号,表示是按引用传递。好了,问题就可能出在这里,有人可能会认为函数的调用应该是foo(&$str),如果真这样调用的话就会出现上述错误结果,按引用传递函数的正确调用方式还是foo($str),在定义的时候需要“&”,在调用的时候是不需要的。

先在的输出结果为:“Qiu Tu”。

三、对象的传递是怎样的?

对象的传递是不需要加上&符号的,对象的引用在函数参数中本身就是传递的一个引用地址。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值