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

来源:互联网 发布:如何屏蔽监控软件 编辑:程序博客网 时间:2024/05/17 03:27

在使用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 0