我有一个功能。多次重复使用,没有任何问题。但现在我无法调用该函数。这是我的功能
function a($a,&$b){
// functions code here
}
我像这样调用函数。
a(3,null);
我的代码有什么错误?
我有一个功能。多次重复使用,没有任何问题。但现在我无法调用该函数。这是我的功能
function a($a,&$b){
// functions code here
}
我像这样调用函数。
a(3,null);
我的代码有什么错误?
您正在尝试null
通过引用传递。
function a($a,&$b){
// functions code here
}
a(3,$otherVar);
// A copy of 3 is sent to the function.
// $otherVar is actually passed to the function
你可以在紧要关头也使用这样的东西:
$null = 0; // Throwaway variable
a($a, $null);
但是如果你是通过引用传递的,你为什么要给它一个空值呢?当然,修改第二个变量内容的代码是出于某种目的吗?
顺便说一句,您所做的几乎是想要使用函数重载的完美示例,可惜 PHP 不支持这一点。
您可能要考虑的另一个想法 - 将数组作为参数传递给它,如下所示:
$myVars=array( 'first' => $a, 'second' => $otherVar);
a($myVars);
您可以根据需要传递任意数量的项目,可以将其保留为通过引用传递,但最终会更改数组,而不是直接更改变量。在您的函数中,您可以简单地选择从不修改first
并根据需要对second
(如果存在)进行操作。
可以使用可选参数,但不像您想象的那么直观,并且不适用于您提供的示例:
function makecoffee($var, &$type = "cappuccino")
{
return "Making a cup of $type.\n";
}
echo makecoffee(1);
echo makecoffee(1,null);
输出:
Fatal error: Only variables can be passed by reference in
/var/www/test.php on line 7
这是因为null
仍然不能通过引用传递。但是,您可以使用第一个回声而不会出错。
你会看到你收到一条错误消息
PHP Fatal error: Only variables can be passed by reference in SOMETHING.php on line xxx
这是因为你的函数说它的第二个参数是一个引用(即&$b
),这需要你传递一个变量。您实际上传递null
的是不是变量,因此是问题所在。
如果您需要第二个参数作为参考(解决此问题的一种方法可能是删除该要求)传递一个设置为 null 的变量。例如
$c = null;
a(3, $c);
它应该是 :
function a($a,$b=false){
// functions code here
}