PHP 函数可以接受无限数量的参数吗? [复制]
Posted
技术标签:
【中文标题】PHP 函数可以接受无限数量的参数吗? [复制]【英文标题】:Can a PHP function accept an unlimited number of parameters? [duplicate] 【发布时间】:2011-03-05 22:35:23 【问题描述】:在 php 中有像 unset()
这样的函数,它支持我们向它们抛出的任意数量的参数。
我想创建一个类似的函数,它能够接受任意数量的参数并全部处理。
任何想法,如何做到这一点?
【问题讨论】:
如果您将来打算对此事进行更多研究,您要查找的术语是variadic function。链接的 Wikipedia 文章甚至包含一个 PHP 示例。 如果您认为函数将来有可能发生变化,您可能希望将字符串变量与parse_str
一起使用。
【参考方案1】:
php7 通过在函数定义中的参数名称 之前使用省略号,为函数提供passing and catching unlimited parameters
的简单方法。以下是演示相同的示例:
<?php
function print_names(...$names)
foreach($names AS $name) echo "The name is: <b>$name</b>.\n";
print_names(
"Superman",
"Ironman",
"Spiderman",
"HULK",
"Thor",
"Captain America",
"Batman"
);
致谢:http://dwellupper.io/post/5/passing-unlimited-parameters-to-functions-in-php7
【讨论】:
给出的参考不正确。这是在 PHP 5.6 php.net/manual/en/… 中首次引入的【参考方案2】:如果您使用的是 PHP 5.6 或更高版本,参数列表可能包含 ...
标记,以表示该函数接受可变数量的参数。参数将作为数组传递给给定的变量;只需使用 ...
,您就可以访问无限的变量参数。
例如:
<?php
function sum(...$numbers)
$sum = 0;
foreach ($numbers as $n)
$sum += $n;
return $sum ;
echo sum(1, 2, 3, 4, 5);
?>
如果您使用的是 PHP 版本 ,那么您可以使用 func_num_args()、func_get_arg() 和 func_get_args() 函数访问无限参数。
【讨论】:
【参考方案3】:如果你有 PHP 5.6+,那么你可以使用
function sum(...$numbers)
functions.variable-arg-list
【讨论】:
【参考方案4】:在 PHP 中,使用函数 func_get_args
获取所有传递的参数。
<?php
function myfunc()
$args = func_get_args();
foreach ($args as $arg)
echo $arg."/n";
myfunc('hello', 'world', '.');
?>
另一种方法是将变量数组传递给您的函数,因此您不必使用 $arg[2];
之类的东西,而是可以使用 $args['myvar'];
或重新记住传入的东西的顺序。它也是无限的可扩展,这意味着您可以稍后添加新变量,而无需更改您已经编码的内容。
<?php
function myfunc($args)
while(list($var, $value)=each($args))
echo $var.' '.$value."/n";
myfunc(array('first'=>'hello', 'second'=>'world', '.'));
?>
【讨论】:
【参考方案5】:您可以使用 3 个函数来使用它。有这样的函数声明:
function foo()
/* Code here */
可以使用的功能如下
func_num_args() 它返回已传递给数组的参数数量
func_get_arg($index) 它返回指定索引处的参数值
func_get_args() 它返回提供的参数数组。
【讨论】:
【参考方案6】:您可以在您的函数范围内使用这些函数:
func_get_arg() func_get_args() func_num_args()一些例子:
foreach (func_get_args() as $arg)
// ...
for ($i = 0, $total = func_num_args(); $i < $total; $i++)
$arg = func_get_arg($i);
【讨论】:
【参考方案7】:您可以在函数中使用func_get_args() 来解析任意数量的传递参数。
【讨论】:
以上是关于PHP 函数可以接受无限数量的参数吗? [复制]的主要内容,如果未能解决你的问题,请参考以下文章