Php函数仅使用指定的参数

时间:2013-12-16 18:26:11

标签: php

是否需要php函数的所有参数?我的意思是,如果我有一个像这样的5个参数的函数

function MyFunction($conditionArg, $arg1, $arg2, $arg3, $arg4) {
    if($conditionArg == "something") {
        // use arguments 1 and 2
    }
    elseif($conditionArg == "something else") {
        // use arguments 3 and 4
    }
}

所以我的问题是:当我调用该函数时,我只能提供像这样的所需参数

MyFunction("something", $arg1 value, $arg2 value)

2 个答案:

答案 0 :(得分:3)

在这种情况下,您可以指定默认参数。如果在函数调用期间未指定参数,则将使用它们的默认值。

function MyFunction($conditionArg, $arg1=null, $arg2=null, $arg3=null, $arg4=null) {
    if($conditionArg == "something") {
        // use arguments 1 and 2
    }
    elseif($conditionArg == "something else") {
        // use arguments 3 and 4
    }
}

现在,以下所有函数调用都可以正常工作:

MyFunction("something");
MyFunction("something", $arg1);
MyFunction("something", $arg1, $arg2);
MyFunction("something", $arg1, $arg2, $arg3);
MyFunction("something", $arg1, $arg2, $arg3, $arg4);

另请参阅:Should my PHP functions accept an array of arguments or should I explicitly request arguments?

答案 1 :(得分:1)

您可以在声明功能时设置默认值:

function MyFunction($conditionArg, $arg1=false, $arg2=false, $arg3=false, $arg4=false) {
    if($conditionArg == "something") {
        // use arguments 1 and 2
    }
    elseif($conditionArg == "something else") {
        // use arguments 3 and 4
    }
}

在上面的示例中,现在只需要$ conditionArg,其他所有内容在函数范围内都默认为false。

它可以默认为任何东西,字符串int,null等。

在这样的示例中,另一个选项是模仿pythonic kwargs数组并将一个参数作为数组传递,仅包含所需的参数作为数组元素......

MyFunction($args = array())
{
  if(isset($args['condition']))
  {
    if($args['condition'] === "something")
    {
    //make hay
    }
    elseif($args['condition'] === "derp")
    {
    //make a different kind of hay
    }

  }

}

进一步采取第二个例子,如果总是需要第一个项目,那么分别传递第一个并传递第二个参数:

MyFunction($conditionArg, $args = array())
{

    if($condition === "something")
    {
      //use $args['one'], $args['two']
    }
    elseif($condition === "derp")
    {
      //use $args['three'], $args['four']
    }  

}