在以下代码段中,printPhrase
如何知道传递的参数是$a
还是$b
(因此它使用默认值$c
或{{1} }和$a
(所以它使用默认值$c
)?
$b
答案 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!');
}
这会给你输出一只黑猫!