根据以前的参数获取默认参数的值

时间:2014-08-25 14:00:06

标签: php function default-parameters default-arguments

我有一个PHP函数,它接受三个参数,其中一个是可选参数。

function theRange($min, $max) {
    // Function Body
}

但是我必须将限制设置为默认参数并将其作为可选参数提供。所以,我做的是:

function theRange($min, $max = 5) {
    // Function Body
}

$min大于5时出现问题,如果最大值小于最小值,则该值无效。因此,我将$max默认为$min,因此我所做的是:

function theRange($min, $max = $min) {
    // Function Body
}

这会抛出如下错误:

  

解析错误:语法错误, functions.php 中的意外'$min'T_VARIABLE 2

我目前正在以这种方式处理它:

function theRange($min, $max = null) {
    if (!isset($max) || is_null($max))
         $max = $min;
    // Function Body
}

是否有更好的方法来处理此默认参数,将上一个参数作为输入方案?提前致谢! :)

2 个答案:

答案 0 :(得分:1)

只需指定默认值,并检查其内部功能是否有效:

function theRange($min, $max = 5) {
    $max = $min > $max ? $min : $max;
}

答案 1 :(得分:1)

不能想到另一种方式 - 但你当然可以使用三元运算符缩短相当多的时间。我认为使用isset根本没有任何意义 - $max始终设置,因为您在函数参数中指定了它。< / p>

function theRange($min, $max = null) {
     $max = is_null($max) ? $min : $max;
    // Function Body
}

但是你仍然需要做额外的检查,因为min = 10和max = 5可以明确地传递给函数。

function theRange($min, $max = null) {
     $max = is_null($max) || $max < $min ? $min : $max;
    // Function Body
}

根据该功能实际应该做什么,您可能还想检查/排除负值......