我不知道这叫做什么,但我看到PHP支持一个很酷的参数传递,如:
function myFunc($required_value, $optional_value1 = 'default', $optional_value2 = 'default2'){
}
然后我就能做到:
myFunc('something', $optional_value2 = 'test');
关于这个的2个问题:
答案 0 :(得分:1)
在你的例子中。有一个小错误。鉴于你的功能
function myFunc($required_value, $optional_value1 = 'default', $optional_value2 = 'default2'){
.....
}
您可以通过以下方式调用此方法:
myFunc('required_value'); //$optional_value1 = 'default', $optional_value2 = 'default2'
myFunc('required_value', 'opt1'); //$optional_value2 = 'default2'
myFunc('required_value', 'opt1', 'op2');
需要注意的是,php不支持命名参数,所以顺序很重要。因此,你不能省略中间参数。所以以下语句是错误的,因为您正在尝试使用命名参数。
myFunc('something', $optional_value2 = 'test');
有关详细信息,请参阅this
答案 1 :(得分:0)
我想到的唯一想法是通过数组传递参数。
function f($params)
{
if(!isset($params['name']) || !isset($params['adress']))
{
//trigger error throw exception or whatever
}
//do something with params
}
并致电
f(array('name' => 'asdfasdf', 'adress' => 'adfasdf'));
然后在函数中你可以检查是否有足够的参数来处理函数。
PHP没有命名参数,例如C#。
PHP支持参数的默认值,因此您可以使用它,例如:
function f($name = "John Doe"){echo $name;}
致电
echo f(); // John Doe will be displayed
echo f("Robert"); //Robert will be displayed
答案 2 :(得分:0)
我不确定you are able to do
是什么,但php不支持Named Parameters
毁
myFunc('something', $optional_value2 = 'test');
并不意味着$optional_value2
会在函数See Demo
您目前正在实施的内容在函数
中称为Default parameters答案 3 :(得分:0)
这是默认参数
需要注意的是,可选参数只能在最后一个中指定,因此必需参数位于函数定义中的可选参数之前,例如。
function myFunc($ param1,$ optional1 ='string',$ optional2 = 5) {
}
在调用函数时我们可以将其称为
myFunc($param1);
myFunc($param1 , 'new string');
myFunc($param1,'string',10);
但不是myFunc($ param1,10); 不允许跳过中间参数!!! 您用来调用func的方法是错误的
在你的例子中。有一个小错误。 你不能省略中间障碍。所以以下函数调用
myFunc('something', $optional_value2 = 'test');
是不允许的! 进一步$ optional_value2 ='test'不能出现在函数调用中......只需将'test'作为参数传递给函数。