PHP函数可以接受无限数量的参数吗?

Sta*_*arx 20 php arguments function

在PHP中,有类似的函数unset()支持我们抛出的任何数量的参数.

我想创建一个类似的函数,它能够接受任意数量的参数并处理它们.

任何想法,怎么做?

Aar*_*run 28

在PHP中,使用该函数func_get_args获取所有传递的参数.

<?php
function myfunc(){
    $args = func_get_args();
    foreach ($args as $arg)
      echo $arg."/n";
}

myfunc('hello', 'world', '.');
?>
Run Code Online (Sandbox Code Playgroud)

另一种方法是将一组变量传递给你的函数,这样你就不必使用类似的东西$arg[2];,而是可以使用$args['myvar'];或重新编写传入的内容.它也是无限可扩展的,这意味着你可以在以后添加新的变量无需更改已编码的内容.

<?php
function myfunc($args){
    while(list($var, $value)=each($args))
      echo $var.' '.$value."/n";
}

myfunc(array('first'=>'hello', 'second'=>'world', '.'));
?>
Run Code Online (Sandbox Code Playgroud)


Ali*_*xel 11

您可以在函数范围内使用这些函数:

  • func_get_arg()
  • func_get_args()
  • func_num_args()

一些例子:

foreach (func_get_args() as $arg)
{
    // ...
}
Run Code Online (Sandbox Code Playgroud)
for ($i = 0, $total = func_num_args(); $i < $total; $i++)
{
    $arg = func_get_arg($i);
}
Run Code Online (Sandbox Code Playgroud)


Col*_*Nik 5

如果你有 PHP 5.6+ ,那么你可以使用

function sum(...$numbers) 
Run Code Online (Sandbox Code Playgroud)

functions.variable-arg-list