Php 基于上一个参数获取默认参数的值
我有一个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
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)
,则会导致错误。我想避免函数体中的第一行!!!:)好吧,我在你的帖子中看不到:)此外,你最后一个例子中的第一个条件永远不会是真的$马克斯总是一成不变。两个答案都是一样的,我所做的一切也是一样的!所以,投票决定答案吧!两个答案都是一样的,我所做的一切也是一样的!所以,投票决定答案吧!