<?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 ==''的用途,但由于参数不是字符串,所以不起作用。
答案 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
。