我创建了以下函数,如果将选定的日期字符串传递给它,它只会回显"活动":
function active_day($theday) {
if (date('D') == $theday) {
echo 'active';
}
}
如果我传入一个参数,例如,该函数可以正常工作
active_day( 'Sun' );
然而,我想引入两个论点,例如
active_day( 'Sun', 'Mon' );
这适用于周日,但由于某种原因,它忽略了周一。
你知道我做错了什么吗?
您需要更改函数声明本身。
function active_day($theday,$anotherday)
由于您已将函数定义为接受单个参数,因此它只接受单个参数。
其他备选方案
在您的情况下,您可以将params作为数组传递给您的函数。
function active_day($newarr) {
// if (date('D') == $theday) {
// echo 'active';
// }
echo $newarr[0];//Sun
echo $newarr[1];//Mon
}
$arr= array('Sun','Mon');
active_day($arr);
您声明函数只接受一个参数,然后检查该参数。如果你打算传递多个参数,那么就这样声明:
function active_day($theday, $secondday);
然后你可以在两天内完成:
active_day( 'Sun', 'Mon' );
如果你事先不知道要传递多少个参数,你可以使用func_get_args
函数并相应地更改你的函数:
function active_day() {
$days = func_get_args();
foreach($days as $day) {
echo "$day - ";
if (date('D') == $day) {
echo 'active';
}
echo "'n";
}
}
您正在寻找PHP函数_get_args:
<?php
function foo()
{
$numargs = func_num_args();
echo "Number of arguments: $numargs<br />'n";
if ($numargs >= 2) {
echo "Second argument is: " . func_get_arg(1) . "<br />'n";
}
$arg_list = func_get_args();
for ($i = 0; $i < $numargs; $i++) {
echo "Argument $i is: " . $arg_list[$i] . "<br />'n";
}
}
foo(1, 2, 3);
?>
将输出:
参数数量:3
第二个参数是:2
参数0为:1
参数1为:2
参数2是:3