创建变量参数列表

时间:2016-04-19 06:49:02

标签: php

我正在寻找一些建议,我已经在手册中访问了this page,但它可能是错误的页面,或者我误解了指令,因为我仍然感到困惑。

enter image description here

关于上述作业,我有以下问题。 我想知道:

  1. 首先是什么是可变长度参数?
  2. 创建函数不是问题,但是如何设置argumnets的数量,因为根据问题(如果我理解正确),该函数应该能够获取任意数量的参数。我想这又回到了关于可变长度参数的第一个问题......?
  3. 感谢您阅读

6 个答案:

答案 0 :(得分:3)

  

PHP支持用户定义的可变长度参数列表   功能。这是使用PHP 5.6和中的...标记实现的   稍后,使用func_num_args(),func_get_arg()和   PHP 5.5及更早版本中的func_get_args()函数。

http://php.net/manual/en/functions.arguments.php#functions.variable-arg-list

这是5.6 +

<?php

function my_func(...$parameters)
{
    echo "There were ".count($parameters)." parameters passed:\n";

    foreach ($parameters as $a_parameter)
    {
        echo "Number ".$a_parameter."\n";
    }
}

echo my_func(1, 2, 3, 4, 5);

?>

https://3v4l.org/QuJqD

在(甚至更多)简单的单词中:

魔法发生在...令牌上。 my_func需要变量数量的参数,这些参数将存储在$parameters数组中。所有这些都是因为...之前的$parameters。然后在count数组上使用$parameter,我们得到该数组中存储的参数的数字

正如Steven在评论中所说的那样:my_func(...$parameters)有一个可变长度参数列表,而不是固定长度的参数列表,它看起来像function my_func($param1, $param2, $param3, $param4, $param5) 始终期望 5 参数。

答案 1 :(得分:1)

要在PHP上使用可变长度参数,您需要使用函数func_get_args()来定义函数声明中的参数。你的功能如下:

function foo()
{
    $params_count = func_num_args();
    $params_values = func_get_args();
}

$params_values上,有foo()函数的所有参数。在params_count上,有foo()的参数数量。您可以使用func_num_args()

获取foo函数的参数数量

使用此功能的示例(https://3v4l.org/TWd3v):

function foo() {
    $params_count = func_num_args();
    var_dump($params_count);
    $params_values = func_get_args();
    var_dump($params_values);
}

答案 2 :(得分:1)

函数可以使用可变数量的参数 您可以使用func_get_args获取所有函数参数并使用它们。

请参阅http://php.net/manual/en/function.func-get-args.php

答案 3 :(得分:1)

<?php
    function my_func(){
        $args = func_num_args();
        $args_list = func_get_args();
        echo 'There were '.$args.' numbers passed:<br>';
        foreach($args_list as $k=>$v){
            echo 'Number '.$v.'.<br>';
        }
    }

    my_func(1,2,3,4,5);
    my_func(3,4,5);
?>

输出1:

There were 5 numbers passed:
Number 1.
Number 2.
Number 3.
Number 4.
Number 5.

输出2:

There were 3 numbers passed:
Number 3.
Number 4.
Number 5.

答案 4 :(得分:1)

PHP支持可变长度函数,为了实现创建没有参数的函数所需的功能,你可以使用PHP函数func_get_args()获取该参数

function noprms(){
    $count = func_num_args();
    $args = func_get_args();
    echo "There were $count arguments passed \n";
    echo "Number ".implode(",\nNumber ",$args)."\n";
}

noprms(1,2,3,4,5)."\n";
noprms(1,2,3,4,5,6,7,8,9)."\n";

Docs Demo

答案 5 :(得分:0)

我认为这个问题涉及三点符号:来自手册:

  

在PHP 5.6及更高版本中,参数列表可能包含...标记,表示该函数接受可变数量的参数。

变量参数可以作为数组访问(因此您可以循环它们)。

从手册中复制粘贴:

<?php
function sum(...$numbers) {
$acc = 0;
foreach ($numbers as $n) {
    $acc += $n;
}
return $acc;
}

echo sum(1, 2, 3, 4);