将多个参数传递给函数


Pass more than one argument to functions

我创建了以下函数,如果将选定的日期字符串传递给它,它只会回显"活动":

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