在许多语言中,我可以这样做:
function f(a = 0, b = 0, c = 0)
{
// Do something
}
f(b=3, c=4);
我可以在PHP中做这样的事情吗?
非常感谢你!
答案 0 :(得分:0)
确实
function foo($bar = "test") {
echo "I want ".$bar;
}
答案 1 :(得分:0)
不,不幸的是,你无法跨越" PHP中的参数,因此默认值只能在列表的末尾。
所以你可以这样写:
function foo($a=0, $b=0) {}
foo(42);
此处$b
将具有默认值,但$a
赢了,因为我们提供了一个值作为输入。
但是,$b
无法为$a
提供一个值,我们无法为$b
提供一个值 - 我们必须提供null
的值作为第二个参数,并且PHP没有关键字我们可以用来代替第一个参数来说"使用默认"。
有人提到将命名参数添加到PHP的未来版本,类似于非PHP示例。
但是,您可以通过对代码进行一些更改来模拟这一点;一些想法:
$a = is_null($a) ? 42 : $a
视为含义"使用默认",然后撰写{{1}} 答案 2 :(得分:0)
在PHP中,这是不可能的:请参阅PHP Manual。始终从左到右评估功能参数。
然而,
f($b=3, $c=4);
是可能的,但是可以做一些不同的事情:在调用函数f()之前,对参数进行求值(变量$ b和$ c得到值3和4分配)然后函数被称为
f(3,4)
作为副作用,变量$ b和$ c被设置为新值。