包含2个参数的声明函数是否仅使用1个参数调用仍然运行? (PHP)

时间:2015-05-23 07:12:07

标签: php

假设这是我提到的代码的一个例子。

<?php
    function my_function($argument_1, $argument_2){
        echo $argument_1.' '.$argument_2;
    }
    my_function('This is argument_1');
?>

问题是,如果我在上面的代码中只用一个参数提供它,my_function是否仍然存在?

P.S。我已经在我的localhost(XAMPP)上尝试了它并且它正常运行时出现未定义的变量错误(仍然打印出$argument_1)但是我想知道这是一般情况还是因为我的本地主机上的php配置

先谢谢

2 个答案:

答案 0 :(得分:3)

如果在定义中定义了第二个参数的默认值,则只能使用一个参数调用它,例如:

 function my_function($argument_1, $argument_2=''){
            echo $argument_1.' '.$argument_2;
        }
 my_function('This is argument_1');

然后,如果没有提供第二个参数,它将把空字符串作为第二个参数,并且不会抛出任何警告。

否则你应该看到:

  

警告:缺少my_function()

的参数2

  

注意:未定义的变量:argument_2

,你的第二个参数仍将作为空字符串。

另一方面,您可以使用比其定义更多的参数调用函数,并通过func_get_args()函数检索它们,例如:

function my_function(){
        echo implode(' ', func_get_args());
    }
my_function('This is argument_1', 'This is argument_2');

输出:

This is argument_1 This is argument_2 

答案 1 :(得分:0)

检查您的函数调用。

call_user_func_array("my_function", array("one", "two"));
call_user_func_array("my_function", array("one"));
call_user_func_array("my_function");

原因: http://php.net/manual/en/functions.arguments.php