我在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行
这是我第一次尝试制作一个可以传递多个值的函数,所以我没有技能设置来理解为什么这不起作用。基本上 - 我想创建一个可以传递多个值的调试函数,这是在我的公共文件中定义的。
答案 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文档,这里有很多问题。