2

我有一个 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
}

这会引发如下错误:

解析错误:语法错误,第2行的functions.php中出现意外'$min'( T_VARIABLE) 。

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

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

有没有更好的方法来处理这个默认参数,将前一个参数作为输入场景?提前致谢!:)

4

2 回答 2

1

想不出另一种方法——但你当然可以使用三元运算符缩短相当多的时间。而且我认为 usingisset在这里根本没有意义 -$max始终设置,因为您在函数参数中指定了它。

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
}

根据该函数的实际用途,您可能还需要检查/排除负值……</p>

于 2014-08-25T14:58:46.883 回答
1

只需分配默认值,并检查它是否在函数内部有效:

function theRange($min, $max = 5) {
    $max = $min > $max ? $min : $max;
}
于 2014-08-25T14:03:53.963 回答