首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP致命错误:调用时按引用传递已被删除

PHP致命错误:调用时按引用传递已被删除
EN

Stack Overflow用户
提问于 2016-07-24 18:21:19
回答 3查看 596关注 0票数 0

您好,我正在使用一个旧的脚本,我得到这个错误时,试图访问的网站,这是脚本正在运行。

代码语言:javascript
复制
Fatal error: Call-time pass-by-reference has been removed in /home/image/public_html/*****/admin/inc/html.inc.php on line 86

下面是从第83行到89行的Php代码我运行的是Php版本5.5.20

代码语言:javascript
复制
if ($flag) {
    $out  = '';
    $find = '{CONSTVAR:$';
    html_replacevar(&$html, $find, $page);
    if (strpos($html, '{') === FALSE) {
        $out = $html;
    }

知道php的人能告诉我可能的问题是什么,以及如何修复它吗?我刚接触php和编程,所以这就是我需要帮助的原因。非常感谢。

EN

回答 3

Stack Overflow用户

发布于 2016-07-24 18:24:43

问题是你是通过引用来传递变量。如错误所示。尝试修改函数html_replacevar,使其返回修改后的html,并按如下方式使用:

代码语言:javascript
复制
$html = html_replacevar($html, $find, $page);
票数 1
EN

Stack Overflow用户

发布于 2016-07-24 18:42:03

这是关于理解参考文献的。作为引用的函数参数会传递该实际变量,因此在函数内部对该变量所做的修改将保留在函数外部。默认情况下,传递给函数的变量是副本,因此在函数内部更改它不会在函数外部产生任何影响。此规则的例外是作为对象的参数,因此对它们所做的更改(而不是重新分配变量)始终保持不变。

引用是前面有&的变量。您过去可以选择是否在调用时使用引用,您可以执行以下任一操作:

代码语言:javascript
复制
$foo = bar($baz);
$foo = bar(&$baz);

只有第二个意味着bar()可以返回值并对原始$baz进行更改。现在,为了使语言更清晰、更高效,您只能在函数/方法的签名中设置哪些参数是引用,例如:

代码语言:javascript
复制
function bar(&$qux) {
    …
}

现在每个人都知道函数打算修改它的第一个参数,而且您永远不会将&添加到调用中引用的参数中。

票数 1
EN

Stack Overflow用户

发布于 2016-07-24 18:26:47

PHP不再允许在函数调用上按引用传递,但是它允许在函数定义中这样做。

尝试替换

代码语言:javascript
复制
html_replacevar(&$html, $find, $page);

使用

代码语言:javascript
复制
html_replacevar($html, $find, $page);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38550975

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档