PHP默认参数值:编译器如何知道哪个参数值对于哪个参数?

时间:2014-11-26 03:54:51

标签: php function default-value default-arguments

在以下代码段中,printPhrase如何知道传递的参数是$a还是$b(因此它使用默认值$c或{{1} }和$a(所以它使用默认值$c)?

$b

2 个答案:

答案 0 :(得分:2)

在php中,参数总是从左向右传递而不是跳过。所以printPhrase('A ', ' cat!');总是填充函数的第一个和第二个参数值。

http://php.net/manual/en/functions.arguments.php#functions.arguments.default

存在proposal以跳过参数。

如果你想使用默认参数,你需要像在这个答案中重写你的代码:https://stackoverflow.com/a/9541822/1503018

答案 1 :(得分:0)

private function callprintPhrase () {
  printPhrase('A ', ' cat!');
}

因为你已经传递了2个参数,所以它们将被视为$ a和$ b的参数。所以它可以打印像A cat candle!这样的东西你需要在第二个参数中传递空值,如果它要取$ b的值。

private function callprintPhrase () {
      printPhrase('A ','', ' cat!');
    }

这会给你输出一只黑猫!