在使用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”。
三、对象的传递是怎样的?
对象的传递是不需要加上&符号的,对象的引用在函数参数中本身就是传递的一个引用地址。
本文详细解释了在PHP中如何正确地使用按引用传递的方法,包括解决由按引用传递引起的错误,如Fatal error: Call-time pass-by-reference has been removed。同时介绍了PHP 5.4之后的变化,以及对象传递的特点。
225

被折叠的 条评论
为什么被折叠?



