避免在功能中无法传递参考错误

时间:2014-11-04 13:15:42

标签: php function reference

我有一个函数,其中一个参数与引用(&)一起传递。但是,如果我将该参数设置为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时不使用引用)

2 个答案:

答案 0 :(得分:2)

如果你交换参数的位置,你仍然可以创建一个可选的引用:

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);

答案 1 :(得分:0)

你不能引用NULL,它不存在。老实说,在调用函数并运行if($ reference!== NULL)块之前检查null。或者您可以将函数拆分为两个单独的函数,一个是$ reference为null而另一个是$ reference指向某个函数。