无法将参数传递给我的函数?

时间:2013-09-17 03:39:39

标签: php wordpress

我在common.php文件中有以下内容:

$debug = true;

function debug_to_screen(&$array) 
    { 
        foreach($array as &$value) 
        { 
            if(is_array($value)) 
            { 
                print("Debug Mode: " + $value); 
            } 
        } 
    } 

在我的主文件中,我用以下内容调用此函数:

require("common.php");     

if(!isset($_COOKIE["qcore"])) 
{
    debug_to_screen("Cookie not found: ", var_dump($_COOKIE['qcore']));
}

但是我收到以下错误:

  

致命错误:无法通过引用传递参数1   C:\ DWASFiles \网站\ junglegym \ VirtualDirectory0 \网站\ wwwroot的\的wp-content \插件\ QCORE \的login.php   在第8行

这是我第一次尝试制作一个可以传递多个值的函数,所以我没有技能设置来理解为什么这不起作用。基本上 - 我想创建一个可以传递多个值的调试函数,这是在我的公共文件中定义的。

3 个答案:

答案 0 :(得分:3)

你的问题在这里:

debug_to_screen("Cookie not found: "...

您要传递给期望通过引用传递数据的函数 - 这意味着您要向它发送ACTUAL变量,而不是它的副本。

您需要先创建数组,然后通过引用传递给函数。

这样的事情:

$array=$_COOKIE;
debug_to_screen($array);

在您的函数中,您将其定义为:

function debug_to_screen(&$array)

额外&表示该函数正在使用ACTUAL变量,而不是它的副本。

这也行不通:

function julie(&$bob)
{
// something..
}


julie(5);

这是因为虽然函数可以改变5,但它不能通过引用传递返回。

$var1=5;
julie($var1);

这可以很好地工作,因为可以修改$ var1并且调用该函数的外部代码可以使用更改的变量。

答案 1 :(得分:2)

你的function debug_to_screen(&$array)只接受一个参数,但是你发送文本作为第一个参数而cookie作为第二个参数。

所以

替换

debug_to_screen("Cookie not found: ", var_dump($_COOKIE['qcore']));

debug_to_screen($_COOKIE['qcore']);

答案 2 :(得分:2)

没有必要通过引用传递,并且当只定义一个时,你传递两个参数。你也试图print一个数组,var_dump打印不返回。

我认为你需要查看你正在使用的函数的PHP文档,这里有很多问题。