如何在函数中使用无穷大参数(如 PHP 的 isset())
2022-08-30 15:00:50
你知道PHP如何接受多个(也没有限制)参数吗?isset()
就像我能做到的:
isset($var1,$var2,$var3,$var4,$var5,$var6,$var7,$var8,$var9,$var10,$var11);
//etc etc
我如何在自己的函数中做到这一点?我怎样才能处理通过的无穷大参数?
他们是怎么做到的?
你知道PHP如何接受多个(也没有限制)参数吗?isset()
就像我能做到的:
isset($var1,$var2,$var3,$var4,$var5,$var6,$var7,$var8,$var9,$var10,$var11);
//etc etc
我如何在自己的函数中做到这一点?我怎样才能处理通过的无穷大参数?
他们是怎么做到的?
func_get_args
会做你想做的事:
function infinite_parameters() {
foreach (func_get_args() as $param) {
echo "Param is $param" . PHP_EOL;
}
}
您还可以用于获取特定参数(它是零索引的):func_get_arg
function infinite_parameters() {
echo func_get_arg(2);
}
但要小心检查您是否具有该参数:
function infinite_parameters() {
if (func_num_args() < 3) {
throw new BadFunctionCallException("Not enough parameters!");
}
}
您甚至可以将常规参数混合在一起:func_*_arg
function foo($param1, $param2) {
echo $param1; // Works as normal
echo func_get_arg(0); // Gets $param1
if (func_num_args() >= 3) {
echo func_get_arg(2);
}
}
但在使用它之前,请考虑一下您是否真的想要具有不确定的参数。数组不够吗?
从 PHP 5.6 开始,您可以使用令牌“..."
例:
<?php
function sum(...$numbers) {
$acc = 0;
foreach ($numbers as $n) {
$acc += $n;
}
return $acc;
}
echo sum(1, 2, 3, 4);
?>
资料来源:http://php.net/manual/en/functions.arguments.php#functions.variable-arg-list