可选参数

Optional Parameter

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

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

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

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

你可以这样使用:

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

一般示例:

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

通常尽量将所有可选参数放在末尾

您必须在函数参数中声明一个可选参数。它不起作用,因为您必须告诉 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 )