你知道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
您可以使用func_get_args()
它将返回的参数数组。
function work_with_arguments() {
echo implode(", ", func_get_args());
}
work_with_arguments("Hello", "World");
//Outputs: Hello, World
调用func_get_args()
的函数中会返回传递给PHP的参数数组。