如果我有这样的功能:
function abc($a,$b,$c = 'foo',$d = 'bar') { ... }
我希望$c
假设它是默认值,但是需要设置$d
,我将如何在PHP中进行调用?
答案 0 :(得分:9)
function abc($a, $b, $c = 'foo', $d = 'bar') {
if ($c === null)
$c = 'foo';
// Do something...
}
然后你会调用这样的函数:
abc('a', 'b', null, 'd');
不,它不是很漂亮,但它能完成这项工作。如果你真的喜欢冒险,你可以传入一个关联数组而不是最后两个参数,但我认为这比你想要的更多。
答案 1 :(得分:4)
关联数组在这里并不是很糟糕,特别是当参数列表开始变大时:
function abc($args = array()) {
$defaults = array('c' => 'foo', 'd' => 'bar');
$args = array_merge($defaults, $args);
}
如果你想明确地要求其中一些,你可以把它们放在前面:
function abc($a, $b, $args = array()) {
}
这取决于你,我看到大项目使用两种方法(强制传递null和这个),老实说,我更喜欢这个。如果您熟悉Javascript,当您向它们传递选项时,许多脚本会使用此行为,因此它不是完全陌生的。
答案 2 :(得分:2)
PHP不支持此功能。 (non-explicit ref)
答案 3 :(得分:0)
我不相信你可以在php中这样做。
答案 4 :(得分:0)
如果将所有参数放入参数对象然后解析它会怎样?
function abc(arguments) {
foreach (index=>value in arguments) { ... }
}
abc({message: "Out of condoms.", haveSex: false, code: 404});