将可能未定义的参数作为函数参数传递

时间:2015-10-02 18:03:00

标签: php

我有一个函数可以根据传递给它的过滤器检索图像。

function getImgs($one = NULL,$two = NULL,$three = NULL,$four = NULL) {}

我打电话给

$img->getImgs($_GET['one'],$_GET['two'],$_GET['three'],$_GET['four']);

这些参数不一定必须存在,因此它们在通过时可能是未定义的。

我希望传递每个参数(如果存在),如果不存在则不传递它。我该怎么办呢?当他们以某种方式被传递时,我可以= NULL吗?

3 个答案:

答案 0 :(得分:0)

编写一个检查params的函数,如下所示:

function getQueryParam($index)
{
    return isset($_GET[$index])?$_GET[$index]:null;
}
//then call you function like this
$img->getImgs(getQueryParam('one'),getQueryParam('two'),getQueryParam('three'),getQueryParam('four'));

答案 1 :(得分:0)

尝试传递数组:

function getImgs($imgArr) {
    foreach($imgArray as $key => $val){
        if(!empty($val)){
        // Do stuff
        }
    }
}

这样,您只能使用通过$_GET传入的项目。

$img->getImgs($_GET);

答案 2 :(得分:0)

也许这有效:

$img->getImgs(($_GET['one']?$_GET['one']:NULL),($_GET['two']?$_GET['two']:NULL),($_GET['three']?$_GET['three']:NULL),($_GET['four']?$_GET['four']:NULL));

如果您使用错误日志记录,您可能会看到它引发了一些有关未定义变量的警告,此解决方案可防止崩溃/无法运行的代码,但它不会阻止日志记录。 这也假设变量不是FALSE, NULL, 0, array(), ''或任何其他形式的零,零或空值。