可选参数

时间:2017-04-20 03:01:09

标签: php optional-parameters

我正在编写一个带有可选参数的php函数,似乎无法使其工作。

function myFunc($param,$optional){
    $var = $optional || [];
}

逻辑是,如果使用$optional参数调用它,$var设置$optional的值,如果留空$var设置为新数组{{1} }}。我虽然得到了一个未定义的变量[]

问题:为什么我不能在我的函数中声明一个可选的参数?

2 个答案:

答案 0 :(得分:3)

您必须在函数参数中声明一个可选参数。它不起作用,因为你必须告诉PHP解释器期望一个参数。

function myFunc($param, $optional = null){
    // ...
}

在PHP 7+中,您可以使用扩展运算符进行参数解包以表示可选参数。这比向函数发送参数数组要好。

function myFunc($param, ...$optional){
    print_r($optional);
}

myFunc('baz'); // Array ( )
myFunc('baz', 'foo', 'foobar', 'whoo'); // Array ( [0] => foo [1] => foobar [2] => whoo )

答案 1 :(得分:1)

你可以使用这样的东西:

function myFunc($param, $optional = '') {
    $var = $optional;
    if ($var == '') {
      $var = [];
    }
}
//without parameter
myFunc('abc');
//with parameter
myFunc('abc', 'optional param');

通用示例:

function myFunc($param, $optional1 = '', $optional2 = []) {

通常会尝试将所有可选参数保留在最后