Проверка большого числа php

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

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

будет истинным, если $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 $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 

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

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

Некоторые другие возможности:

if (in_array($value, range($min, $max), true))

Или:

if ($value === min(max($value, $min), $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= $value3 && $num 

Другой способ сделать это с простым диапазоном if / else. Например:

$watermarkSize = 0; if (($originalImageWidth >= 0) && ($originalImageWidth else if (($originalImageWidth >= 641) && ($originalImageWidth else if (($originalImageWidth >= 1025) && ($originalImageWidth else if (($originalImageWidth >= 2049) && ($originalImageWidth else
function limit_range($num, $min, $max) < // Now limit it return $num>$max?$max:$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 

Источник

is_int

Замечание:

Чтобы проверить, что переменная является числом или строкой, содержащей число (как поле ввода в форме, которое всегда является строкой), используйте is_numeric() .

Список параметров

Возвращаемые значения

Возвращает true , если value является целым числом ( int ), или false в противном случае.

Примеры

Пример #1 Пример использования is_int()

$values = array( 23 , "23" , 23.5 , "23.5" , null , true , false );
foreach ( $values as $value ) echo "is_int(" ;
var_export ( $value );
echo ") color: #007700">;
var_dump ( is_int ( $value ));
>
?>

Результат выполнения данного примера:

is_int(23) = bool(true) is_int('23') = bool(false) is_int(23.5) = bool(false) is_int('23.5') = bool(false) is_int(NULL) = bool(false) is_int(true) = bool(false) is_int(false) = bool(false)

Смотрите также

  • is_bool() - Проверяет, является ли переменная булевой
  • is_float() - Проверяет, является ли переменная числом с плавающей точкой
  • is_numeric() - Проверяет, является ли переменная числом или строкой, содержащей число
  • is_string() - Проверяет, является ли переменная строкой
  • is_array() - Определяет, является ли переменная массивом
  • is_object() - Проверяет, является ли переменная объектом

User Contributed Notes 30 notes

I've found that both that is_int and ctype_digit don't behave quite as I'd expect, so I made a simple function called isInteger which does. I hope somebody finds it useful.

function isInteger ( $input ) return( ctype_digit ( strval ( $input )));
>

var_dump ( is_int ( 23 )); //bool(true)
var_dump ( is_int ( "23" )); //bool(false)
var_dump ( is_int ( 23.5 )); //bool(false)
var_dump ( is_int ( NULL )); //bool(false)
var_dump ( is_int ( "" )); //bool(false)

var_dump ( ctype_digit ( 23 )); //bool(true)
var_dump ( ctype_digit ( "23" )); //bool(false)
var_dump ( ctype_digit ( 23.5 )); //bool(false)
var_dump ( ctype_digit ( NULL )); //bool(false)
var_dump ( ctype_digit ( "" )); //bool(true)

var_dump ( isInteger ( 23 )); //bool(true)
var_dump ( isInteger ( "23" )); //bool(true)
var_dump ( isInteger ( 23.5 )); //bool(false)
var_dump ( isInteger ( NULL )); //bool(false)
var_dump ( isInteger ( "" )); //bool(false)
?>

Keep in mind that is_int() operates in signed fashion, not unsigned, and is limited to the word size of the environment php is running in.

is_int ( 2147483647 ); // true
is_int ( 2147483648 ); // false
is_int ( 9223372036854775807 ); // false
is_int ( 9223372036854775808 ); // false
?>

In a 64-bit environment:

is_int ( 2147483647 ); // true
is_int ( 2147483648 ); // true
is_int ( 9223372036854775807 ); // true
is_int ( 9223372036854775808 ); // false
?>

If you find yourself deployed in a 32-bit environment where you are required to deal with numeric confirmation of integers (and integers only) potentially breaching the 32-bit span, you can combine is_int() with is_float() to guarantee a cover of the full, signed 64-bit span:

$small = 2147483647 ; // will always be true for is_int(), but never for is_float()
$big = 9223372036854775807 ; // will only be true for is_int() in a 64-bit environment

if( is_int ( $small ) || is_float ( $small ) ); // passes in a 32-bit environment
if( is_int ( $big ) || is_float ( $big ) ); // passes in a 32-bit environment
?>

Simon Neaves was close on explaining why his function is perfect choice for testing for an int (as possibly most people would need). He made some errors on his ctype_digit() output though - possibly a typo, or maybe a bug in his version of PHP at the time.

The correct output for parts of his examples should be:

var_dump ( ctype_digit ( 23 )); //bool(false)
var_dump ( ctype_digit ( "23" )); //bool(true)
var_dump ( ctype_digit ( 23.5 )); //bool(false)
var_dump ( ctype_digit ( NULL )); //bool(false)
var_dump ( ctype_digit ( "" )); //bool(false)
?>

As you can see, the reason why using *just* ctype_digit() may not always work is because it only returns TRUE when given a string as input - given a number value and it returns FALSE (which may be unexpected).

With this function you can check if every of multiple variables are int. This is a little more comfortable than writing 'is_int' for every variable you've got.

function are_int ( ) $args = func_get_args ();
foreach ( $args as $arg )
if ( ! is_int ( $arg ) )
return false ;
return true ;
>

// Example:
are_int ( 4 , 9 ); // true
are_int ( 22 , 08, 'foo' ); // false
?>

Источник

Работа с числами в PHP

Сборник математических функций PHP и примеры их использования.

Проверка переменных

Является ли переменная числом

is_numeric($value) – проверяет, является ли значение или переменная числом или строкой, содержащей число.

is_numeric(1); // true is_numeric(0.1); // true is_numeric(-1); // true is_numeric(-0.1); // true is_numeric('1'); // true is_numeric('1abc'); // false is_numeric('abc'); // false

ctype_digit($value) – проверяет, являются ли все символы в строке цифрами.

ctype_digit('123'); // true ctype_digit('123.10'); // false ctype_digit('abc'); // false ctype_digit('1abc'); // false ctype_digit('abc1'); // false

is_int($value) – проверяет, является ли значение целым числом.

is_int(1); // true is_int(0.1); // false is_int(-1); // true is_int(-0.1); // false is_int('1'); // false is_int('1abc'); // false is_int('abc'); // false

is_float($value) – проверяет, является ли значение числом с плавающей точкой.

is_float(1); // false is_float(0.1); // true is_float(-1); // false is_float(-0.1); // true is_float('1'); // false is_float('1abc'); // false is_float('abc'); // false

Целое или число с плавающей точкой

Следующий пример определяет является ли число целым или с плавающей точкой, при этом не проверяет его отрицательность.

$value = 1; if (is_int($value)) < echo 'Целое число'; >elseif (is_float($value)) < echo 'Число с плавающей точкой'; >else

Положительное или отрицательное

$value = 1; if ($value == abs($value)) < echo 'Число положительное'; >if ($value != abs($value))

Чётное или нечётное

$value = 100; if (($value % 2) == 0) < echo 'Число чётное'; >if (($value % 2) != 0)

Привидение к типу

Преобразование в целое число

(int) 1; // 1 (int) 0.1; // 0 (int) -1; // -1 (int) -0.1; // 0 (int) '1'; // 1 (int) 'abc'; // 0 (int) '1abc'; // 1 (int) 'abc1'; // 0

В место (int) можно использовать (intiger) . Тоже самое делает функция intval() :

intval(1); // 1 intval(0.1); // 0 intval(-1); // -1 intval(-0.1); // 0 intval('1'); // 1 intval('abc'); // 0 intval('1abc'); // 1 intval('abc1'); // 0

Преобразование в число с плавающей точкой

(float) 1; // 1 (float) 0.1; // 0.1 (float) -1; // -1 (float) -0.1; // -0.1 (float) '1'; // 1 (float) 'abc'; // 0 (float) '1abc'; // 1 (float) 'abc1'; // 0

В место (float) можно использовать (double) или (real) и тоже самое делает функция floatval() .

floatval(1); // 1 floatval(0.1); // 0.1 floatval(-1); // -1 floatval(-0.1); // -0.1 floatval('1'); // 1 floatval('abc'); // 0 floatval('1abc'); // 1 floatval('abc1'); // 0

Округление

Функция round($value, $precision) округляет значение до указанных цифр после запятой.

echo round(100001.123456, 2); // 100001.12

Функция может окрукруглять значение целой части (числа перед запятой), для этого нужно указать отрицательное значение во втором аргументе.

Округление до целого числа в меньшую сторону:

echo floor(100.4); // 100 echo floor(100.9); // 100

Округление до целого числа в большую сторону:

echo ceil(100.4); // 101 echo ceil(100.1); // 101

Ведущие нули

Добавить ведущие нули:

echo sprintf("%06d", 100); // 000100 echo sprintf("%010d", 100); // 0000000100

Удалить ведущие нули:

echo intval('0000000100'); // 100 // Или с помощью ltrim echo ltrim('0000000100', '0'); // 100

Абсолютное значение

Функция abs($value) – возвращает абсолютное значение (модуль числа), т.е. из отрицательного делает положительное.

echo abs(100); // 100 echo abs(-100); // 100 echo abs(1.5); // 1.5 echo abs(-1.5); // 1.5

Сделать число отрицательным:

$value = 10; $value = -abs($value); echo $value; // -10

Инкремент и декремент

Инкремент – увеличение значения на единицу, бывает постфиксный и префиксный.

// Постфиксный инкремент $value = 10; echo $value++; // 10 echo $value; // 11 // Префиксный инкремент $value = 10; echo ++$value; // 11 echo $value; // 11

Декремент уменьшает значение на единицу.

// Постфиксный декремент $value = 10; echo $value--; // 10 echo $value; // 9 // Префиксный декремент $value = 10; echo --$value; // 9 echo $value; // 9

Минимальное значение

Источник

Как проверить переменную $_GET на целое число?

Подскажите как проверить переменную получаемую из $_GET на целое число?
is_int не работает. Желательно сделать проверку встроенными средствами php. Ясно что можно написать функцию самому, но я думаю встроенные средства уже есть. Так же хотелось бы узнать почему is_int так себя ведет.

if ($value && ctype_digit((string)$value))
$a = 100; //$a = '1a'; //$a = 0; //$a = '1,1'; //$a = 1.1; //$a = 'a'; if(!intval($a) or $a < 1 or !preg_match('/^\+?\d+$/', $a)) < echo 'BaD'; >else

FanatPHP

DmitriyEntelis

var_dump( (string)ceil((float)$_GET['test']) === (string)$_GET['test'] );

sbh

sbh

DmitriyEntelis

sbh: я скажу честно - я никогда не парился на сервере такой глубокой валидацией.
Есть js который проверяет на вводе что бы пользователь не ввел какую то гадость.
На самом сервере преобразование типов просто для контроля целостности, условно $a = (int) $_GET[. ]; - если пользователь отключил js и прислал что то не то - ну сам дурак.

DmitriyEntelis

function isInteger($input) < return(ctype_digit(strval($input))); >var_dump(is_int(23)); //bool(true) var_dump(is_int("23")); //bool(false) var_dump(is_int(23.5)); //bool(false) var_dump(is_int(NULL)); //bool(false) var_dump(is_int("")); //bool(false) var_dump(ctype_digit(23)); //bool(true) var_dump(ctype_digit("23")); //bool(false) var_dump(ctype_digit(23.5)); //bool(false) var_dump(ctype_digit(NULL)); //bool(false) var_dump(ctype_digit("")); //bool(true) var_dump(isInteger(23)); //bool(true) var_dump(isInteger("23")); //bool(true) var_dump(isInteger(23.5)); //bool(false) var_dump(isInteger(NULL)); //bool(false) var_dump(isInteger("")); //bool(false)

nikolaevevge

Вот это решение - if (ctype_digit(strval($input))) класс! Благодарю, когда сам делал ctype_digit не нашёл в поиске. И в моём случаи если передан 0 оно тоже отлично работает. Мне нужна была проверка на целое или 0.

Источник

Читайте также:  Border radius круг css
Оцените статью