我有一个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
}
是否有更好的方法来处理此默认参数,将上一个参数作为输入方案?提前致谢! :)
答案 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
}
根据该功能实际应该做什么,您可能还想检查/排除负值......