PHP调用函数与默认参数

时间:2014-03-22 11:30:40

标签: php function arguments default

在许多语言中,我可以这样做:

function f(a = 0, b = 0, c = 0)
{
   // Do something
}

f(b=3, c=4);

我可以在PHP中做这样的事情吗?

非常感谢你!

3 个答案:

答案 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被设置为新值。

相关问题