我正在寻找一些建议,我已经在手册中访问了this page,但它可能是错误的页面,或者我误解了指令,因为我仍然感到困惑。
关于上述作业,我有以下问题。 我想知道:
感谢您阅读
答案 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);
?>
在(甚至更多)简单的单词中:
魔法发生在...
令牌上。 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()
使用此功能的示例(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
获取所有函数参数并使用它们。
答案 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";
答案 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);