如何在函数中使用无限参数(如 PHP isset())[重复]
Posted
技术标签:
【中文标题】如何在函数中使用无限参数(如 PHP isset())[重复]【英文标题】:How to work with infinity arguments in a function (like PHP's isset()) [duplicate] 【发布时间】:2012-08-23 07:11:58 【问题描述】:您知道 php 的 isset()
是如何接受多个(也没有限制)参数的吗?
我能做到:
isset($var1,$var2,$var3,$var4,$var5,$var6,$var7,$var8,$var9,$var10,$var11);
//etc etc
我如何能够在我自己的函数中做到这一点?我将如何处理传递的无穷大参数?
他们是怎么做到的?
【问题讨论】:
【参考方案1】: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);
但在使用它之前,请考虑一下您是否真的想要有不定参数。数组不够用吗?
【讨论】:
数组使用起来不太方便。例如,我经常将 isset() 替换为 empty(),它只接受一个 arg。所以我经常声明函数 mempty() 可以接受很多参数,但和 isset 一样方便。不错的答案顺便说一句。【参考方案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
【讨论】:
应更新原始答案以包含此内容。干得好。【参考方案3】:你可以使用func_get_args()
,它会返回一个参数数组。
function work_with_arguments()
echo implode(", ", func_get_args());
work_with_arguments("Hello", "World");
//Outputs: Hello, World
【讨论】:
【参考方案4】:在函数内部调用 @987654321@
将返回传递给 PHP 的参数数组。
【讨论】:
以上是关于如何在函数中使用无限参数(如 PHP isset())[重复]的主要内容,如果未能解决你的问题,请参考以下文章