Как проверить, находится ли целое число в диапазоне чисел в PHP?

Как я могу проверить, находится ли данный номер в диапазоне номеров?

Выражение:

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

будет истинным, если $value находится между $min и $max , включительно

Дополнительную информацию о операторах сравнения см. В документах PHP

Вы можете использовать filter_var

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

Это также позволит вам указать, хотите ли вы разрешать восьмеричные и шестнадцатеричные обозначения целых чисел . Обратите внимание, что функция безопасна по типу. 5.5 не является целым числом, а является float и не будет проверяться.

Подробное руководство по фильтрации данных с помощью PHP:

Вы можете поднять небольшую вспомогательную функцию, чтобы сделать это:

 /** * 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 ( in_array(2, range(1,7)) ) { echo 'Number 2 is in range 1-7'; } 

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

 if (($num >= $lower_boundary) && ($num <= $upper_boundary)) { 

Вы можете настроить операторы сравнения, если вы хотите, чтобы граничные значения не были действительными.

Вы можете попробовать следующее одно заявление:

 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