传递函数的最后一个默认参数的值

Er.*_*.KT 4 php

很长一段时间我都在研究php.

但是我可能不知道一个问题

就像我有一个功能如下:

function hello($param1, $param2="2", $param3="3", $param4="4")
Run Code Online (Sandbox Code Playgroud)

现在每当我使用这个函数,如果我需要第4个参数那个$ param4那么我仍然需要像这样将所有空白称为空白:

hello(1, '', '', "param4");
Run Code Online (Sandbox Code Playgroud)

那么还有另一种方法可以在调用中传递第1和第4个参数而不是长列表空格吗?

或者还有其他标准方法吗?

Mon*_*eus 5

有一个这个名为skipparams的RFC,但它被拒绝了.

PHP没有语法糖,例如hello(1, , , "param4");nor hello(1, default, default, "param4");(根据RFC)在调用函数时跳过可选参数.

如果这是你自己的函数,那么你可以选择将选项传递到插件中的常见jQuery样式,如下所示:

function hello( $param1, $more_params = [] )
{
    static $default_params = [
        'param2' => '2',
        'param3' => '3',
        'param4' => '4'
    ];

    $more_params = array_merge( $default_params, $more_params );
}
Run Code Online (Sandbox Code Playgroud)

现在你可以:

hello( 1, [ 'param4'=>'not 4, muahaha!' ] );
Run Code Online (Sandbox Code Playgroud)

如果你的函数需要一些高级的东西,比如类型提示,那么array_merge()你需要手动循环$more_params并强制执行类型.