php switch case语句用于处理带小数/分数的范围

时间:2017-03-25 23:33:29

标签: php arrays range decimal fractions

使用案例开关,我如何测试十进制值是否在一个范围内?

此代码似乎只检查整数。

这是我的代码,试图检查小数/分数。

$my_num = 0.38;

switch(true) {
    case in_array($my_num, range(0, .20, 0.01)):
        $my_num_result = "It looks like your number is between 0 - 0.20!";
    break;
    case in_array($my_num, range(.21, .40, 0.01)):
        $my_num_result = "I am between .21 - 0.40!";
    break;
}

//Result: I am between .21 - 0.40!
echo $my_num_result;

这个问题是this question and answer的延续,但没有解决小数问题。

1 个答案:

答案 0 :(得分:0)

我建议你使用的另一种方法(如果你没有太多的间隔来测试),假设你需要知道哪个区间包含一个数字:

$intervals = [[0,.20],[.21,.40],[.41,.60]/*...*/];
$num = .32;

$message = 'I am between %s - %s!';

foreach ($intervals as $inter) {
    if ( $inter[0] <= $num && $num <= $inter[1] ) {
        vprintf($message, $inter);
        break;
    }
}