PHP致命错误:已删除调用时间传递引用

时间:2016-07-24 10:21:19

标签: php html

您好我正在使用旧脚本,我在尝试时遇到此错误 访问运行脚本的站点。

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

if ($flag) {
    $out  = '';
    $find = '{CONSTVAR:$';
    html_replacevar(&$html, $find, $page);
    if (strpos($html, '{') === FALSE) {
        $out = $html;
    }

任何知道php的人都能说出我可能遇到的问题,以及如何解决这个问题?我是php和编码的新手,所以我需要帮助。非常感谢你。

3 个答案:

答案 0 :(得分:1)

问题是你通过引用传递变量。正如错误所说。尝试修改函数html_replacevar,使其返回修改后的html并像这样使用它:

$html = html_replacevar($html, $find, $page);

答案 1 :(得分:1)

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

引用是以&开头的变量。您以前可以选择是否在呼叫时使用引用,您可以执行以下任一操作:

$foo = bar($baz);
$foo = bar(&$baz);

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

function bar(&$qux) {
    …
}

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

答案 2 :(得分:0)

PHP不再允许在函数调用上传递引用,但它确实允许在函数定义中使用它。

尝试替换

html_replacevar(&$html, $find, $page);

html_replacevar($html, $find, $page);