如果函数中没有提供参数,我该如何测试它是否留空?

时间:2009-04-03 00:20:15

标签: php

<?php    
/* Copyright Date
--------------------------*/
function copyright_date($creation_year) {
    $current_year = date('Y');

    if ($creation_year == $current_year || $creation_year == '') {
        echo $current_year;
    } 
    else {
        echo $creation_year . '-' . $current_year;
    }           
}
?>

如果有人忘记添加参数(网站创建年份),例如

<?php copyright_date(); ?>

而不是:

<?php copyright_date(2009); ?>

我如何测试以查看参数是否为空?在我的if语句中,这就是$ creation_year ==''的用途,但由于参数不是字符串,所以不起作用。

4 个答案:

答案 0 :(得分:4)

使$creation_year成为可选参数,默认值为NULL

function copyright_date($creation_year=NULL) {

现在在函数内部只测试$creation_year是否等于NULL,这将在没有参数的情况下调用函数时发生。

答案 1 :(得分:1)

您可以使用isset功能

if ($creation_year == $current_year || !isset($creation_year)){
 //...
}

答案 2 :(得分:0)

如果有人需要进一步澄清答案:

您可以尝试将函数的参数设置为NULL。这会将变量的值(在您的情况下为$ creation_year)设置为空变量。变量已声明,但不包含任何值。当像这样调用函数时:

<?php copyright_date();  ?>

您的函数将执行else块中的代码。

如果以另一种方式调用该函数(使用参数提供),如下所示:

 <?php copyright_date($creation_year);  ?>

提供的参数替换NULL值,并运行If块中的代码。

考虑到这一点,你还需要这个:

|| $creation_year == NULL

在你的if条件下。这将检查$ creation_year的值是否为空。

答案 3 :(得分:0)

实际上我认为您必须使用 func_num_args()。在实践中更安全。

function copyright_date($creation_year = NULL) {
    if(!func_num_args()) {
        // Nothing passed to the function
    }
}

为什么?因为如果您设置默认值,假设 function copyright_date($creation_year = NULL) 您不会知道是否传递了 NULL。如果您设置了默认值,isset() 也会返回 true