Php проверить что переменная число
Перейти к содержимому

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

  • автор:

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

15 years ago

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

14 years ago

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).

13 years ago

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.

In a 32-bit environment:

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
?>

13 years ago

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
?>

is_float

Проверяет, является ли данная переменная числом с плавающей точкой.

Замечание:

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

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

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

Возвращает true , если value является переменной типа float , false в противном случае.

Примеры

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

var_dump(is_float(27.25));
var_dump(is_float(‘abc’));
var_dump(is_float(23));
var_dump(is_float(23.5));
var_dump(is_float(1e7)); //Научная нотация
var_dump(is_float(true));
?>

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

bool(true) bool(false) bool(false) bool(true) bool(true) bool(false)

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

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

User Contributed Notes 10 notes

8 years ago

Coercing the value to float and back to string was a neat trick. You can also just add a literal 0 to whatever you’re checking.

function isfloat ( $value ) // PHP automagically tries to coerce $value to a number
return is_float ( $value + 0 );
>
?>

Seems to work ok:

isfloat ( «5.0» + 0 ); // true
isfloat ( «5.0» ); // false
isfloat ( 5 + 0 ); // false
isfloat ( 5.0 + 0 ); // false
isfloat ( ‘a’ + 0 ); // false
?>

YMMV

15 years ago

If you want to test whether a string is containing a float, rather than if a variable is a float, you can use this simple little function:

function isfloat($f) return ($f == (string)(float)$f);

2 years ago

is_float() returns true for NAN, INF and -INF. You may want to test is_float($value) && is_finite($value), or alternatively filter_var($value, FILTER_VALIDATE_FLOAT) !== false.

8 years ago

Boylett’s solution is elegant (http://php.net/manual/en/function.is-float.php#85848), but won’t work for long float’s or variables that are not explicitly type of ‘string’ or for long floats that are encased in quotes, making it a string that will be truncated/rounded when cast to a float. So, further logic must be completed to test for the case. Take the following example:

if (! function_exists ( «test_float» ))

function test_float ( $test )

if (! is_scalar ( $test ))

$type = gettype ( $test );

if ( $type === «float» ) return true ;
> else return preg_match ( «/^\\d+\\.\\d+$/» , $test ) === 1 ;
>

var_dump ( $test );
var_dump ((float) $test );
var_dump ( $test == (string)(float) $test );
var_dump ( test_float ( $test ));

So far, so good, right? Yeah, but it’s misleading, because the string is so long, that when it’s converted to a float, it won’t be equivalent to the comparison of the value being cast back into a string . So the aforementioned short function works. Look at this next example:

var_dump ( $test );
var_dump ((float) $test );
var_dump ( $test == (string)(float) $test );
var_dump ( test_float ( $test ));

Why is it not working now, but the value is truly a float? Same reasoning as mentioned before. The float is so long that it’s truncated/rounded and doesn’t match the comparison being done with the short-hand function.

So, as you can see, more logic should be applied to the variable you’re testing.

15 years ago

As celelibi at gmail dot com stated, is_float checks ONLY the type of the variable not the data it holds!

If you want to check if string represent a floating point value use the following regular expression and not is_float(),
or poorly written custom functions.

11 years ago

Yet another regular expression for float in real life:

return (! is_bool ( $val ) && ( is_float ( $val ) || preg_match ( $pattern , trim ( $val ))));
>
?>

// Matches:
1, -1, 1.0, -1.0, ‘1’, ‘-1’, ‘1.0’, ‘-1.0’, ‘2.1’, ‘0’, 0, ‘ 0 ‘, ‘ 0.1 ‘, ‘ -0.0 ‘, -0.0, 3., ‘-3.’, ‘.27’, .27, ‘-0’, ‘+4’, ‘1e2’, ‘+1353.0316547’, ‘13213.032468e-13465’, ‘-8E+3’, ‘-1354.98879e+37436’

is_float

Проверяет, является ли данная переменная числом с плавающей точкой.

Замечание:

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

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

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

Возвращает TRUE , если var является переменной типа float , FALSE в противном случае.

Примеры

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

if ( is_float ( 27.25 )) echo «is float\n» ;
> else echo «is not float\n» ;
>
var_dump ( is_float ( ‘abc’ ));
var_dump ( is_float ( 23 ));
var_dump ( is_float ( 23.5 ));
var_dump ( is_float ( 1e7 )); //Научная форма записи
var_dump ( is_float ( true ));
?>

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

is float bool(false) bool(false) bool(true) bool(true) bool(false)

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

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

Переменная является числом (PHP)

В PHP, чтобы проверить является ли переменная целочисленным числом, есть функция is_int($var) , которая возвращает true — если является и false если нет.

Проверка is_int

Проверим несколько переменных функцией is_int($var) .

Результат

bool(true) bool(false) bool(false) bool(false)

gettype проверка

Проверить переменную на число, можно так же функцией string gettype($var) , которая возвращает тип переменной в виде строки.

Если переменная является числом, то функция вернет ‘integer’ .

Этот способ не рекомендуется использовать.

Результат

Результат на экране будет таким же как и в первом варианте.

bool(true) bool(false) bool(false) bool(false)
✖ ❤ Мне помогла статья нет оценок
4945 просмотров нет комментариев Артём Фёдоров 04 ноября 2013

Категории

Читайте также

  • Сделать число отрицательным (PHP)
  • Вывод ip2long чисел (PHP)
  • Первые N символов строки цифры (PHP)
  • Максимальное число (JavaScript)
  • Деление без остатка (PHP)
  • Округление в большую сторону (JavaScript)
  • Округление в меньшую сторону (JavaScript)
  • Деление без остатка (JavaScript)
  • Как проверить тип переменной (PHP)
  • Преобразовать строку в число (PHP)
  • Переменная является строкой (JavaScript)
  • Проверка электронной почты (PHP)

Комментарии

Написать комментарий
© Экспэнч 2010-2023
При полном или частичном копировании статей сайта указывайте пожалуйста ссылку на источник
Хотите узнать больше информации, пишите на: artem@expange.ru

Вход на сайт

Введите данные указанные при регистрации:

Социальные сети

Вы можете быстро войти через социальные сети:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *