Php 在可选参数之后声明非可选参数时的行为

Php 在可选参数之后声明非可选参数时的行为,php,parameter-passing,optional-parameters,Php,Parameter Passing,Optional Parameters,让我们定义这个函数: function fooFunction($a, $b='foo', $c){} function fooFunction($a, $b='foo', $c) { var_dump($c); } $foo = fooFunction("bar", "buzz"); 如果我这样称呼它: $foo = fooFunction("bar", "buzz"); …buzz会被分配到c美元还是b美元 参数的默认值的存在与否不会以任何方式影响将哪些参数指定给哪些参数;第

让我们定义这个函数:

function fooFunction($a, $b='foo', $c){}
function fooFunction($a, $b='foo', $c) {
    var_dump($c);
}

$foo = fooFunction("bar", "buzz");
如果我这样称呼它:

$foo = fooFunction("bar", "buzz");

…buzz会被分配到c美元还是b美元

参数的默认值的存在与否不会以任何方式影响将哪些参数指定给哪些参数;第一个传递的参数始终指向第一个参数,第二个指向第二个参数,依此类推。如果没有为参数传递任何值,并且该参数具有默认值,则将使用其默认值


在PHP lol中-您使用的是哪一个IDE?我会认为在除最后一个参数之外的所有参数上都有默认值是糟糕的设计。@NigelRen在我看来,这是糟糕的设计。我只是在我的代码库中找到它,当我的IDE抱怨buzz被分配到$c并且存在类型不匹配时,我对它感到好奇。你可以试试它…:缺少参数3fooFunction@deceze我原以为会发生这种情况,但我可以发誓,调用它时只使用了两个参数,而且没有失败。我可以得到一份关于这种行为的官方证明吗。