Understanding and Validating Integers in PHP

I’ve found many of my friends struggling with the validation of integers i.e. the numbers with only digits in PHP. Some of them were wondering why is_int() or is_integer() functions of PHP sometimes works and sometimes won’t.

If you become clear with the concept of integer and string in PHP then you’ll obviously come to know that why those functions are not working sometime to validate integers in PHP. Let’s look at this by an example


As you can see above, $a is string and $b is a integer and thats what does matter in PHP. Now, let’s try is_int() to validate the integers in PHP.

echo is_int($a); //returns false
echo is_int($b); //return true

And many of the PHP programmers tries to validate the posted values such as is_int($_POST[‘quantity’]) and it just returns the false values although there are only digits in posted quantity.Why it is so? Because, $_POST[‘quantity’] is just a string and nothing more than a string. Values posted from the form’s element can’t be other variable type than string.

How to validate integers (digits) in PHP?

We can use regular expression to check weather posted value contains the integers only or not. But the regular expression might be a tedious task for people who are not good in using regular expression.

The best solution is using a function called ctype_digit() available in PHP. It just check weather the strings contains only digits or not. If you try using ctype_digit($_POST[‘quantity’]) then It will just give you the desired result. But one thing you keep in mind that “ctype_digit()” is character type function the supplied parameter must be a string to get the proper result. And you can use “strval()” function available in PHP to convert any other data type to string in PHP

5 thoughts on “Understanding and Validating Integers in PHP

  1. If you are using ctype_digit() function to validate integer values you must keep in mind that it will return true when you pass ZERO (0) to it.

    Check the different behaviors of this function

    ctype_digit(‘0′); // return true
    ctype_digit(0); // return false
    ctype_digit(‘1′); // return true
    ctype_digit(1); // return false

  2. Thanks for heads up shafiq….I’ve mentioned it in the post

  3. thanxs

  4. i always suspect for validate integer value but now i am sure how to validate integer value.
    Thanks all

  5. manikantan.v.r

    easy to understand thanks

Leave a Reply

Your email address will not be published. Required fields are marked *


You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>