Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/265.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP函数,默认参数为空_Php_Function_Parameters_Overloading - Fatal编程技术网

PHP函数,默认参数为空

PHP函数,默认参数为空,php,function,parameters,overloading,Php,Function,Parameters,Overloading,我有一个PHP函数签名,看起来像这样,如果没有提供任何内容,我希望第4个参数在默认情况下为NULL testfunction($param1, $param2, $param3, $param4=NULL) { //do stuff } 我也可以使用4个参数来调用 x = testfunction('100', 'abc', 'xxx', null); 为什么我也可以使用3个参数调用函数而没有任何错误 x = testfunction('100', 'abc', 'xxx'); 我

我有一个PHP函数签名,看起来像这样,如果没有提供任何内容,我希望第4个参数在默认情况下为NULL

testfunction($param1, $param2, $param3, $param4=NULL) {
    //do stuff
}
我也可以使用4个参数来调用

x = testfunction('100', 'abc', 'xxx', null);
为什么我也可以使用3个参数调用函数而没有任何错误

x = testfunction('100', 'abc', 'xxx');
我所做的是否正确(使用3个参数)?有没有想过这与定义了单独函数签名的传统方法重载有什么关系


我的问题是一般性的。希望有人能对它有所了解。

当您声明这样的函数时:

testfunction($param1, $param2, $param3, $param4=NULL) {
    //do stuff
}
您告诉PHP,$param4已经有了一个值,因此当调用该函数时,已经为其分配了一个值。它不希望您发送该参数的参数,因为已经指定了默认参数

因此,它知道该功能将能够正常运行(在一定程度上)。 它对于创建可选参数非常有用

但是,如果将函数声明为:

testfunction($param1, $param2, $param3, $param4) {
    //do stuff
}
PHP希望您发送该参数($param4),因为如果没有它,函数将无法完成您设置它要做的事情,至少PHP假设是这样,因为您永远不会创建一个包含4个参数的函数,而函数体中没有一个参数


有意义吗?

您不必传递具有默认值的参数。所以你所做的是正确的。因为第四个参数是可选的。您可能对这个问题感兴趣,因此在php中,您可以使用类似于
function test(){}
的函数,并将其称为
test('arg1',arg2
)`。函数签名就是函数名。