Php 基于上一个参数获取默认参数的值

Php 基于上一个参数获取默认参数的值,php,function,default-parameters,default-arguments,Php,Function,Default Parameters,Default Arguments,我有一个PHP函数,它接受三个参数,其中一个是可选参数 function theRange($min, $max) { // Function Body } 但我必须将限制设置为默认参数,并将其作为可选参数。所以,我所做的是: function theRange($min, $max = 5) { // Function Body } function theRange($min, $max = $min) { // Function Body } 当$min大于5

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

function theRange($min, $max) {
    // Function Body
}
但我必须将限制设置为默认参数,并将其作为可选参数。所以,我所做的是:

function theRange($min, $max = 5) {
    // Function Body
}
function theRange($min, $max = $min) {
    // Function Body
}
$min
大于
5
时出现问题,如果最大值小于最小值,则该值无效。因此,我将
$max
默认为
$min
,因此我所做的是:

function theRange($min, $max = 5) {
    // Function Body
}
function theRange($min, $max = $min) {
    // Function Body
}
这会引发如下错误:

分析错误:语法错误,在函数中出现意外的
'$min'
T_变量
),php
在线2

我目前是这样处理的:

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

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

只需指定默认值,并检查其在函数中是否有效:

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

想不出另一种方法,但当然可以使用三元运算符将其缩短很多。我认为在这里使用
isset
毫无意义–
$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
}
函数范围($min,$max=null){
$max=is_null($max)|$max<$min?$min:$max;
//功能体
}

根据函数的实际功能,您可能还需要检查/排除负值…

如果我给出
theRange(10)
,则会导致错误。我想避免函数体中的第一行!!!:)好吧,我在你的帖子中看不到:)此外,你最后一个例子中的第一个条件永远不会是真的$马克斯总是一成不变。两个答案都是一样的,我所做的一切也是一样的!所以,投票决定答案吧!两个答案都是一样的,我所做的一切也是一样的!所以,投票决定答案吧!