我有一个函数,其中一个参数通过引用(&)传递。然而,如果我将该参数设置为NULL,我会得到错误:
"无法在…中通过引用传递参数1"
这是脚本:
<?php
function doSomething(&$reference,$arg1,$arg2){
if($reference !== NULL){
//Do something with reference
}else{
//Do something else
}
}
//Call with reference
doSomething($a,$b,$c);
//Call without reference
//doSomething(NULL,$b,$c);
?>
我认为这是因为NULL不是作为变量声明的,而是在函数本身中立即声明的。当我这样做的时候它就起作用了:
$nullVar = NULL;
doSomething($nullVar,$b,$c);
我如何编辑我的函数,使其在我刚将NULL放入函数时不会显示引用错误,并且只在可能的情况下保留引用(因为当引用设置为NULL时我不使用它)
如果交换参数的位置,仍然可以创建可选引用:
function doSomething($arg1,$arg2, &$reference = null){
if($reference !== NULL){
//Do something with reference
}else{
//Do something else
}
}
$a = 'a';
$b = 'b';
doSomething($a, $b);
但是将null
传递给第三个参数仍然会导致错误。
doSomething($a, $b, null); // error
此外,新创建的变量也可以满足引用。由于没有赋值的变量在默认情况下是null
,因此您可以提供一个变量,而不打算在以后使用它。
doSomething($a, $b, $unused_var);
您不能引用NULL,它不存在。老实说,在调用函数并运行if($reference!==null)块之前,请检查是否为null。或者,您可以将函数拆分为两个独立的函数,一个是$reference为null,另一个是指向某物的$reference。