如何检查整数是否在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'; }
你可以尝试下面的一条语句:
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