我创建了以下函数,只要将选定的日期字符串传递给它,就会回显“活动”:
function active_day($theday) {
if (date('D') == $theday) {
echo 'active';
}
}
如果我传入一个参数,例如。
,该函数可以正常工作active_day( 'Sun' );
但是,我想传递两个论点,例如
active_day( 'Sun', 'Mon' );
这在周日工作正常,但由于某种原因它会忽略星期一。
任何想法我做错了什么?
答案 0 :(得分:2)
您需要更改函数声明本身。
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);
答案 1 :(得分:1)
你声明你的函数只接受一个参数 - 然后检查那个参数。如果您打算传递多个参数,则将其声明为:
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";
}
}
答案 2 :(得分:-1)
你正在寻找PHP func_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