将多个参数传递给函数

时间:2013-11-25 09:16:52

标签: php

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

function active_day($theday) {
    if (date('D') == $theday) {
        echo 'active';
    }
}

如果我传入一个参数,例如。

,该函数可以正常工作
active_day( 'Sun' );

但是,我想传递两个论点,例如

active_day( 'Sun', 'Mon' );

这在周日工作正常,但由于某种原因它会忽略星期一。

任何想法我做错了什么?

3 个答案:

答案 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