-1

我在 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']));
}

但是我收到以下错误:

致命错误:无法通过第 8 行 C:\DWASFiles\Sites\junglegym\VirtualDirectory0\site\wwwroot\wp-content\plugins\QCORE\login.php 中的引用传递参数 1

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

4

3 回答 3

3

你的问题在这里:

debug_to_screen("Cookie not found: "...

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

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

像这样的东西:

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

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

function debug_to_screen(&$array)

额外的&意味着该函数正在获取 ACTUAL 变量,而不是它的副本。

这也行不通:

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


julie(5);

这是因为虽然函数可以更改 5,但无法通过引用传递返回。

$var1=5;
julie($var1);

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

于 2013-09-17T03:45:27.263 回答
2

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

所以

代替

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

debug_to_screen($_COOKIE['qcore']);
于 2013-09-17T03:43:21.973 回答
2

不需要通过引用传递,当只定义一个参数时,您将传递两个参数。你也在尝试print一个数组, var_dump 打印不返回。

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

于 2013-09-17T03:45:55.853 回答