Php проверка целое положительное число

Работа с числами в 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

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

Источник

is_int

Замечание:

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

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

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

Возвращает TRUE , если var является целым числом, или 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 «) = » ;
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() — Проверяет, является ли переменная объектом

Источник

is_int

Finds whether the type of the given variable is integer.

Note:

To test if a variable is a number or a numeric string (such as form input, which is always a string), you must use is_numeric() .

Parameters

The variable being evaluated.

Return Values

Returns true if value is an int , false otherwise.

Examples

Example #1 is_int() example

$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 ));
>
?>

The above example will output:

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)

See Also

  • is_bool() — Finds out whether a variable is a boolean
  • is_float() — Finds whether the type of a variable is float
  • is_numeric() — Finds whether a variable is a number or a numeric string
  • is_string() — Find whether the type of a variable is string
  • is_array() — Finds whether a variable is an array
  • is_object() — Finds whether a variable is an 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
?>

Источник

Как проверить переменную $_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.

Источник

Читайте также:  Background Color: body gbcolor
Оцените статью