繁体   English   中英

PHP默认参数值:编译器如何知道哪个参数传递的参数值?

[英]PHP Default parameter values: How does the compiler know which passed parameter-value is for which parameter?

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

private function printPhrase ($a, $b='black', $c='candle!' ) {
  echo $a . $b . $c; //Prints A black cat! or A black candle!
}

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

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

http://php.net/manual/zh-CN/functions.arguments.php#functions.arguments.default

存在跳过参数的建议

如果要使用默认参数,则需要像以下答案中那样重写代码: https : //stackoverflow.com/a/9541822/1503018

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

由于您已经传递了2个参数,它们将被视为$ a和$ b的参数。 这样就可以打印类似A cat candle!东西了A cat candle! 如果要采用$ b的值,则需要在第二个参数中传递null值,即

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

这将为您提供输出A黑猫!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM