我在一个常见的文件中有以下内容.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''Sites''junglegym''VirtualDirectory0''site''wwwroot''wp-content''plugins''QCORE''login.php 在第 8 行
这是我第一次尝试制作一个可以传递多个值的函数,所以我没有技能来理解为什么这不起作用。基本上 - 我想创建一个调试函数,我可以将多个值传递给它,该函数在我的公共文件中定义。
你的问题在这里:
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);
这将非常有效,因为可以修改 $var 1,并且调用函数的外部代码可以使用更改的变量。
您的函数function debug_to_screen(&$array)
只接受一个参数,但是您将文本作为第一个参数发送,cookie作为第二个参数发送。
所以
取代
debug_to_screen("Cookie not found: ", var_dump($_COOKIE['qcore']));
自
debug_to_screen($_COOKIE['qcore']);
无需按引用传递,当只定义一个参数时,您将传递两个参数。您还尝试print
数组,var_dump打印不返回。
我认为您需要查看正在使用的函数的PHP文档,这里有许多问题。