在PHP中按名称指定参数
我不知道这叫什么,但我看到PHP支持一个很酷的参数传递,比如:在PHP中按名称指定参数,php,parameter-passing,Php,Parameter Passing,我不知道这叫什么,但我看到PHP支持一个很酷的参数传递,比如: function myFunc($required_value, $optional_value1 = 'default', $optional_value2 = 'default2'){ } 然后我就能做到: myFunc('something', $optional_value2 = 'test'); 因此,与此相关的两个问题: 这种技术叫什么(供将来参考) 因为它支持什么PHP版本 我唯一想到的是通过数组传递参数 fun
function myFunc($required_value, $optional_value1 = 'default', $optional_value2 = 'default2'){
}
然后我就能做到:
myFunc('something', $optional_value2 = 'test');
因此,与此相关的两个问题:
我唯一想到的是通过数组传递参数
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
我不确定你能做什么,但是php还不支持 毁灭
myFunc('something', $optional_value2 = 'test');
并不意味着$optional_value2
将成为函数中的“test”
您当前正在实现的是在其调用的函数中调用的
以你为例。有一个小错误。考虑到你的功能
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');
有关详细信息,请参见这是默认参数 需要注意的重要一点是,可选参数只能在最后一个参数中指定,因此在函数定义中,必需的参数位于可选参数之前,例如 函数myFunc($param1,$optional1='string',$optional2=5) { } 调用函数时,我们可以将其称为
myFunc($param1);
myFunc($param1 , 'new string');
myFunc($param1,'string',10);
但不是myFunc($1,10);
不允许跳过中间参数强>
您用来调用func的方法是错误的
在你的例子中。有一个小错误。
不能忽略中间参数。下面的函数调用
myFunc('something', $optional_value2 = 'test');
这是不允许的!
进一步的$optional_value2='test'不能出现在函数调用中…只需将'test'作为参数传递给函数。如果这是一个重复,很抱歉,但由于我不知道调用了什么技术,我真的不知道要搜索什么。投票以重复方式关闭。@EduardLuca您的示例没有设置
$optional\u value2
参数。它创建一个局部变量$optional\u value2
并将其值设置为test
,然后它通过test
作为第二个参数,即$optional\u value1
,并保留第三个参数$optional\u value2
作为默认值(default2
)。看看我的重复链接,它展示了如何使用不依赖于顺序的数组来获得灵活的默认参数。我后来意识到了这一点,正如我在@Baba的回答中所说的。我明白了。我想我知道我在做什么,以及为什么它会起作用。当传递参数时,我实际上是给变量赋值,它返回true
。true
值作为第二个参数传递给函数。谜团解开了,这也是PHP不如Python的另一个原因。PHP不如Python。。如果你只知道自己在做什么,那就太棒了。。。其他语言也是一样如果你愿意,我们可以把讨论转移到聊天上,但我这么说的原因是,与其他语言相比,PHP是有限的,所以你可能知道你在做什么,但在PHP中你仍然可以得到10行代码,而在其他语言中,它可以用2行完成。。。。你有权讨论你的选择这对Python来说太糟糕了