Как я могу проверить, находится ли данный номер в диапазоне номеров?
Выражение:
($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'; }
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