如何检查整数是否在PHP中的数字范围内?

我怎样才能检查给定的数字是否在一个数字范围内?

expression方式:

($min <= $value) && ($value <= $max) 

如果$value介于$min$max之间, $min

有关比较运算符的更多信息,请参阅PHP文档

你可以使用filter_var

 filter_var( $yourInteger, FILTER_VALIDATE_INT, array( 'options' => array( 'min_range' => $min, 'max_range' => $max ) ) ); 

这也将允许您指定是否要允许整数的八进制和hex表示法 。 请注意,该function是types安全的。 5.5不是一个整数,而是一个浮点数,不会被validation。

有关使用PHP过滤数据的详细教程:

你可以掀起一个小帮手function来做到这一点:

 /** * Determines if $number is between $min and $max * * @param integer $number The number to test * @param integer $min The minimum value in the range * @param integer $max The maximum value in the range * @param boolean $inclusive Whether the range should be inclusive or not * @return boolean Whether the number was in the range */ function in_range($number, $min, $max, $inclusive = FALSE) { if (is_int($number) && is_int($min) && is_int($max)) { return $inclusive ? ($number >= $min && $number <= $max) : ($number > $min && $number < $max) ; } return FALSE; } 

你会这样使用它:

 var_dump(in_range(5, 0, 10)); // TRUE var_dump(in_range(1, 0, 1)); // FALSE var_dump(in_range(1, 0, 1, TRUE)); // TRUE var_dump(in_range(11, 0, 10, TRUE)); // FALSE // etc... 
 if (($num >= $lower_boundary) && ($num <= $upper_boundary)) { 

如果您希望边界值不是有效的,您可能需要调整比较运算符。

可能有帮助:

 if ( in_array(2, range(1,7)) ) { echo 'Number 2 is in range 1-7'; } 

http://php.net/manual/en/function.range.php

你可以尝试下面的一条语句:

 if (($x-$min)*($x-$max) < 0) 

要么:

 if (max(min($x, $max), $min) == $x) 

其他一些可能性:

 if (in_array($value, range($min, $max), true)) { echo "You can be sure that $min <= $value <= $max"; } 

要么:

 if ($value === min(max($value, $min), $max)) { echo "You can be sure that $min <= $value <= $max"; } 

实际上,这是什么用来投射一个超出范围的值到最接近的一端。

 $value = min(max($value, $min), $max); 

 /** * This is un-sanitized user input. */ $posts_per_page = 999; /** * Sanitize $posts_per_page. */ $posts_per_page = min(max($posts_per_page, 5), 30); /** * Use. */ var_dump($posts_per_page); // Output: int(30) 

使用开关盒

  switch ($num){ case ($num>= $value1 && $num<= $value2): echo "within range 1"; break; case ($num>= $value3 && $num<= $value4): echo "within range 2"; break; . . . . . default: //default echo "within no range"; break; } 

另一种方法是用简单的if / else范围来做到这一点。 例如:

 $watermarkSize = 0; if (($originalImageWidth >= 0) && ($originalImageWidth <= 640)) { $watermarkSize = 10; } else if (($originalImageWidth >= 641) && ($originalImageWidth <= 1024)) { $watermarkSize = 25; } else if (($originalImageWidth >= 1025) && ($originalImageWidth <= 2048)) { $watermarkSize = 50; } else if (($originalImageWidth >= 2049) && ($originalImageWidth <= 4096)) { $watermarkSize = 100; } else { $watermarkSize = 200; } 
 function limit_range($num, $min, $max) { // Now limit it return $num>$max?$max:$num<$min?$min:$num; } $min = 0; // Minimum number can be $max = 4; // Maximum number can be $num = 10; // Your number // Number returned is limited to be minimum 0 and maximum 4 echo limit_range($num, $min, $max); // return 4 $num = 2; echo limit_range($num, $min, $max); // return 2 $num = -1; echo limit_range($num, $min, $max); // return 0