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

Ant*_*ton 9 php deprecated fatal-error

我有一个古老的脚本,最近我得到这个错误:

Fatal error: Call-time pass-by-reference has been removed in /****/******/public_html/****/cp-list-summary.php on line 100
Run Code Online (Sandbox Code Playgroud)

它看起来像是在该文件的第100行:

if ($row[images])
{
    $image_set = array ();
    $result = mysql_query ('SELECT fname FROM ' . $dbimgs . ' WHERE listid=\'' . $_GET['id'] . '\' ORDER BY id ASC', $link);
    while ($images = mysql_fetch_array ($result))
    {
        array_push (&$image_set, $images[fname]);
    }
}
Run Code Online (Sandbox Code Playgroud)

是什么导致错误以及如何解决?我不是开发人员,所以请慢慢来.

Pas*_*cal 23

看起来你的网站php已升级或你正在重用<php 5.3中的代码

只需删除&&(&$ image

注意:函数调用上没有引用符号 - 仅在函数定义上.单独的函数定义足以通过引用正确传递参数.从PHP 5.3.0开始,当您在foo(&$ a);中使用&时,您将收到一条警告,指出"call-time pass-by-reference"已弃用.从PHP 5.4.0开始,删除了调用时传递引用,因此使用它会引发致命错误.

不应该通过引用传递其他表达式,因为结果是未定义的.


hjp*_*r92 11

您正试图将指针传递给您的数组array_push.这就是遇到致命错误的原因.只需使用:

array_push( $image_set, $images[fname] );
Run Code Online (Sandbox Code Playgroud)

注意:array_push()如果第一个参数不是数组,则会发出警告.