调用函数时如何省略中间参数的默认值?

时间:2014-08-11 06:42:20

标签: php default-value optional-parameters

我有功能:

function abc( $name, $city = 'duhok', $age = 30 ){

    echo $name.", ".$city.", ".$age;

}

abc( 'Dilovan', null, 26 ); // output: Dilovan, , 26

我想要输出:Dilovan, duhok, 26

我想在不设置第二个参数的情况下使用此函数,第二个参数写入默认值。

abc( 'Dilovan', [what i use here to write defualt value ?], 26 );

4 个答案:

答案 0 :(得分:3)

简短回答:如果不编写一些代码,这是不可能的。

解决方案1 ​​

将此逻辑添加到函数体而不是声明中;例如:

function abc($name, $city = null, $age = 30)
{
    $city = $city !== null ? $city : 'duhok';
    // rest of your code
}

然后你可以这样调用这个函数:

abc('Dilovan', null, 29);

如果给定的$citynull,则会分配默认值。

解决方案2

您可以使用Reflection找出参数的默认值:

$rf = new ReflectionFunction('abc');
$params = $rf->getParameters();

$default_city = $params[1]->getDefaultValue();

abc('Dilovan', $default_city, 26);

答案 1 :(得分:-1)

传递null

abc( 'Dilovan',null, 26 );

答案 2 :(得分:-1)

测试Here

function abc( $name, $city = null, $age = 30 )
{
    if( $city == null )
    {
        $city = 'duhok';
    }

   echo $name.", ".$city.", ".$age;
}


abc( 'Dilovan', null, 26 );

答案 3 :(得分:-1)

试试这个

function abc( $name, $city = 'duhok', $age = 30 )
{
    if($city == null || $city == NULL)
    {
        $city = 'duhok'
    }

   echo $name.", ".$city.", ".$age;
}