致命错误:呼叫时间传递参考

时间:2012-10-24 19:56:53

标签: php

我在注释行上收到此错误。知道为什么吗?

Fatal error: Call-time pass-by-reference has been removed in myfile.php on line 301
Call Stack
#   Time    Memory  Function    Location
1   0.0002  245352  {main}( )   ../plugins.php:0
2   0.3016  7149968 plugin_sandbox_scrape( )    ../plugins.php:156

代码低于......

function rseo_doTheParse($tag, $post){
    //headings
    $keyword = rseo_sanitize3(trim(strtolower(rseo_getKeyword($post))));
    $content = rseo_sanitize3($post->post_content);
    $match = 0;

            $token = '/<'.$tag.'[^>]*>(.*\b'.$keyword.'\b.*)<\/'.$tag.'>/siU';
            if(preg_match($token, &$content, $matches)) //THIS IS LINE 301
            {
                $match = 1;
            }
            return $match;
        }

2 个答案:

答案 0 :(得分:6)

&移除&$content,这是通过引用传递的通话时间。

PHP长期以来一直支持passing arguments by reference;历史上,这可以通过声明函数来通过引用接收参数来实现:

function foo(&$argument) { ... }

foo($value); // pass by reference

或在呼叫站点使用pass-by-reference:

function foo($argument) { ... }

foo(&$value); // call time pass by reference

后一个选项已在PHP 5.4中删除,这就是错误的原因。

答案 1 :(得分:0)

Jon是对的,你必须删除'&amp;'。为了更好的样式,PHP允许仅为定义它的函数传递引用,而不是函数的代码调用。 http://php.net/manual/en/language.references.pass.php的更多详情 在您的情况下,您根本不需要它,因为执行结果无论如何都将被推送到此变量。这是非直观的,但是一些核心PHP函数以这种方式运行