遵循教程我正在努力解决PHP函数中的问题。我有一些关于C#和Java的基本背景知识,根据我的知识,这段代码不应该工作,因为我没有在add()函数中传递任何参数,但是,令人惊讶的是!它的工作原理!
根据{{3}},func_num_args()获取传递给函数的参数个数。当我们没有在函数中传递任何参数时,我们如何回显add()函数的结果?!另外,如果函数是用于获取参数的数量,我们如何使用它来计算数字?!
<?php
function add(){
$args = func_num_args();
$sum = 0;
$i = 0;
for($i; $i< $args; $i++ ){
is_int(func_num_args($i)) ? $sum+= func_num_args($i) : die('Use Only Numbers');
}
}
echo add(2,5,10,12);
?>
感谢您的评论
答案 0 :(得分:3)
function add(){
if(!func_num_args())return 0;
$args = func_get_args();
$sum = 0;
foreach($args as $arg){
if(is_int($arg)){
$sum += $arg;
} else {
die('Use Only Numbers');
}
}
return $sum;
}
正如我在“no args”案例的评论中提到的那样:
func_num_args()
的返回值为0
。 for
- 代码中的循环在$i < $args
之后无效,简化为0 < 0
,即false
。
要想要这样做,你可以尝试使用:
if(!func_num_args()){
die('There are no args!');
}
您的专线echo add();
无论如何都会有效,because:
PHP支持用户定义的可变长度参数列表 功能。这非常简单,使用func_num_args(), func_get_arg()和func_get_args()函数。
不需要特殊语法,参数列表可能仍然存在 显式提供函数定义,并将表现为 正常。
答案 1 :(得分:1)
答案 2 :(得分:1)
使用func_get_args()
func_num_args()
的返回值为0.代码中的for循环将不起作用$i < $args
简化为0&lt; 0,这是假的。
要想要这样做,你可以尝试使用:
if(!func_num_args()){
die('There are no args!');
}