php写一个不定参数/可变参数的函数有两种方式。

  • func_get_args

function foo()
{
    $numargs = func_num_args();
    echo "参数总数量: $numargs<br />\n";
    if ($numargs >= 2) {
        echo "如果参数总数量大于等于二,第二个参数为: " . func_get_arg(1) . "<br />\n";
    }
    $arg_list = func_get_args();
    for ($i = 0; $i < $numargs; $i++) {
        echo "下标 $i 参数为: " . $arg_list[$i] . "<br />\n";
    }
}

foo(1, 2, 3);

func_get_args 返回一个包含函数参数列表的数组 PHP 4+
func_get_arg 返回参数列表的某一项 PHP 4+
func_num_args 返回传递给函数的参数数 PHP 4+

  • PHP「...」语法

function sum(int ...$numbers) {
    $acc = 0;
    foreach ($numbers as $n) {
        $acc += $n;
    }
    return $acc;
}

echo sum(1, 2, 3, 4);

int为参数的类型,可以不指定参数类型,也可以指定为其他类型

例如:

function sum(...$numbers) {}
function sum(string ...$numbers) {}
function sum(array ...$numbers) {}
function sum($user, $name, string ...$numbers) {}

具体详情可参考函数的参数