如何将数字保持在特定范围内?

sta*_*ack 1 php function

我有一个这样的函数:

<?php

function keepInRange($n){

    $min = 5;
    $max = 15;

    if ( $n < $min ) {
        $res = $min;
    } elseif ( $n > $max ) {
        $res = $max;
    } else {
        $res = $n;
    }

    return $res;
}
Run Code Online (Sandbox Code Playgroud)

$min它总是返回和之间的数字$max。它也有效,但对我来说似乎不太专业。我认为它可以更好(没有这些条件)。知道如何让它更短更干净吗?

Sha*_*deh 5

如果您试图使其更短(并且可能更清晰)并删除这些if语句,您可以使用max()andmin()函数:

function keepInRange($n){
    $min = 5;
    $max = 15;
    return max(min($max, $n), $min);
}
Run Code Online (Sandbox Code Playgroud)

另外,正如 @admcfajn 提到的,您可以传递$min和$max作为参数以使函数更加灵活:

function keepInRange($n, $min = 5, $max = 15){
    return max(min($max, $n), $min);
}
Run Code Online (Sandbox Code Playgroud)

  • 谢谢@shafizadeh,很好的解决方案。 (2认同)