What is the use of intval in php?

View Discussion

Improve Article

Save Article

  • Read
  • Discuss
  • View Discussion

    Improve Article

    Save Article

    The intval[] function is an inbuilt function in PHP which returns the integer value of a variable.

    Syntax:

    int intval [ $var, $base ]
    

    Parameters: This function accepts two parameters out of which one is mandatory while the other one is optional. Parameters are described below:

    • $var: It is a mandatory parameter serves as the variable which needs to be converted to its integer value.
    • $base: It ia a optional parameter specifies the base for conversion of $var to its corresponding integer. If $base is not specified.
      • If $var contains 0x [or 0X] as prefix, the base is taken as 16.
      • If $var starts with 0, the base is taken as 8
      • Otherwise, the base is taken as 10.

    Return Value: It returns the corresponding integer value of $var.

    Examples:

    Input : $var = '120', $base = 8
    Output : 80
    
    Input : $var = 0x34
    Output : 52
    
    Input : $var = 034
    Output : 28
    

    Below programs illustrate the use of intval[] function in PHP:

    Program 1:

    Program 2:

    Program 3:

    Reference: //php.net/manual/en/function.intval.php


    [PHP 4, PHP 5, PHP 7, PHP 8]

    intvalGet the integer value of a variable

    Description

    intval[mixed $value, int $base = 10]: int

    Parameters

    value

    The scalar value being converted to an integer

    base

    The base for the conversion

    Note:

    If base is 0, the base used is determined by the format of value:

    • if string includes a "0x" [or "0X"] prefix, the base is taken as 16 [hex]; otherwise,
    • if string starts with "0", the base is taken as 8 [octal]; otherwise,
    • the base is taken as 10 [decimal].

    Return Values

    The integer value of value on success, or 0 on failure. Empty arrays return 0, non-empty arrays return 1.

    The maximum value depends on the system. 32 bit systems have a maximum signed integer range of -2147483648 to 2147483647. So for example on such a system, intval['1000000000000'] will return 2147483647. The maximum signed integer value for 64 bit systems is 9223372036854775807.

    Strings will most likely return 0 although this depends on the leftmost characters of the string. The common rules of integer casting apply.

    Examples

    Example #1 intval[] examples

    The following examples are based on a 32 bit system.

    Notes

    Note:

    The base parameter has no effect unless the value parameter is a string.

    See Also

    • boolval[] - Get the boolean value of a variable
    • floatval[] - Get float value of a variable
    • strval[] - Get string value of a variable
    • settype[] - Set the type of a variable
    • is_numeric[] - Finds whether a variable is a number or a numeric string
    • Type juggling
    • BCMath Arbitrary Precision Mathematics Functions

    Ken

    10 years ago

    Not mentioned elsewhere: intval[NULL] also returns 0.

    leon at leonidasjp dot nl

    5 years ago

    It seems intval is interpreting valid numeric strings differently between PHP 5.6 and 7.0 on one hand, and PHP 7.1 on the other hand.



    will return 1 on PHP 5.6 and PHP 7.0,
    but it will return 100000 on PHP 7.1.

    winbill at hotmail dot com

    11 years ago

    Be careful :

    zak at php dot net

    22 years ago

    intval converts doubles to integers by truncating the fractional component of the number.

    When dealing with some values, this can give odd results.  Consider the following:

    print intval [[0.1 + 0.7] * 10];

    This will most likely print out 7, instead of the expected value of 8.

    For more information, see the section on floating point numbers in the PHP manual [//www.php.net/manual/language.types.double.php]

    Also note that if you try to convert a string to an integer, the result is often 0.

    However, if the leftmost character of a string looks like a valid numeric value, then PHP will keep reading the string until a character that is not valid in a number is encountered.

    For example:

    "101 Dalmations" will convert to 101

    "$1,000,000" will convert to 0 [the 1st character is not a valid start for a number

    "80,000 leagues ..." will convert to 80

    "1.4e98 microLenats were generated when..." will convert to 1.4e98

    Also note that only decimal base numbers are recognized in strings.

    "099" will convert to 99, while "0x99" will convert to 0.

    One additional note on the behavior of intval.  If you specify the base argument, the var argument should be a string - otherwise the base will not be applied.

    For Example:

    print intval [77, 8];   // Prints 77
    print intval ['77', 8]; // Prints 63

    Ben Laurienti

    16 years ago

    You guys are going to love this.  I found something that I found quite disturbing.

    $test1 = intVal[1999];

    $amount = 19.99 * 100;
    $test2 = intVal[$amount];
    $test3 = intVal["$amount"];

    echo $test1 . "
    \n";
    echo $test2 . "
    \n";
    echo $test3 . "
    \n";

    expected output:
    1999
    1999
    1999

    actual output
    1999
    1998
    1999

    Appears to be a floating point issue, but the number 1999 is the only number that I was able to get to do this.  19.99 is the price of many things, and for our purpose we must pass it as 1999 instead of 19.99.

    spoon_reloaded at gmail dot com

    13 years ago

    Here is a really useful undocumented feature:

    You can have it automatically deduce the base of the number from the prefix of the string using the same syntax as integer literals in PHP ["0x" for hexadecimal, "0" for octal, non-"0" for decimal] by passing a base of 0 to intval[]:

    Anony Moose

    2 years ago

    As a warning, do not use this function alone for input validation.

    Vulnerable example:


    The following requests would pass this filter:

    /page.php?id=10
    /page.php?id=10oops
    /page.php?id=10alert[1]
    /page.php?id=1' OR '1'='1
    /page.php?id[]=alert[1]

    Instead use the is_numeric[] function for integer validation:



    Secure example:

    Anonymous

    2 years ago

    PHP 7.2

    $test = intval[150.20*100]; //15019
    $test2 = intval[15020]; //15020
    $test3 = intval[15020.0]; //15020
    $test4 = 150.20*100; //15020.0

    Anthony

    4 years ago

    The binary notation is NOT supported until php7.2

    espertalhao04 at hotmail dot com

    9 years ago

    if you want to take a number from a string, no matter what it may contain, here is a good solution:


    this example returns an int, so it will follow the int rules, and has support for negative values.



    this one returns a string with just the numeric value.
    it also supports negative values.

    the latter is better when you have a 32 bit system and you want a huge int that is higher than PHP_MAX_INT.

    tuxedobob at mac dot com

    18 years ago

    Sometimes intval just won't cut it. For example if you want to use an unsigned 32-bit int and need all 32 bits. Recently, I wrote a little script that took and integer and converted it to an IP address. After realizing I couldn't just mod the whole thing, since the sign bit throws it off [and compensating for that], we ran into a problem where if it was entered into a form, the value somehow wasn't converted to an integer properly, at least not implicitly. The solution for this, and the way I recommend converting a string to an integer, is:

    $num = $num + 0;

    and PHP will leave your number alone; it'll just know it's a number. Such is the fun of a loosely-typed language. :]

    pfreet at gmail dot com

    9 years ago

    Do not use intval[] when you really want round[]. This is due to how PHP handles precision.

    echo number_format[8.20*100, 20], "
    ";
    echo intval[8.20*100], "
    ";
    echo floor[8.20*100], "
    ";
    echo round[8.20*100], "
    ";

    819.99999999999988631316
    819
    819
    820

    mkamerma at science dot uva dot nl

    16 years ago

    As addendum, the "if [$int > 0]" check in the encode function is redundant. It doesn't do anything bad to keep it in since it will always be true when reaching that point, but it's a meaningless conditional this way. It's a remnant from when I tried to write the function in terms of bitshifts, which could lead to negative ints when shifting if the 32nd bit was set [instead of always padding with 0's when using >> it pads with 1's leading to negative ints].

    yves

    11 years ago

    The behaviour of intval[] is interesting when supplying a base, and you better check your intval base-based expressions, as it is counter-intuitive.
    As the example shows

    PHP considers the 42 as being already an integer, and doesn't apply any conversion. And supplying

    produces no error and no warning.

    taylorsarrafian at gmail dot com

    7 years ago

    beware:

    simon at npkk dot cz

    16 years ago

    Still have on mind, that if you convert big numbers by adding zero, PHP makes automatic "to a float" conversion, so it is same as floatVal[]. So if the number is realy big [over 13 digits], you can lose preciosity. Do not use it for such long numbers, if all bits do matter [IPv6 addresses and similar].

    How do I cast an int in PHP?

    You can use [int] or [integer] to cast a variable to integer, use [float] , [double] or [real] to cast a variable to float. Similarly, you can use the [string] to cast a variable to string, and so on. The PHP gettype[] function returns "double" in case of a float for historical reasons.

    How do I cast a string in PHP?

    Answer: Use the strval[] Function You can simply use type casting or the strval[] function to convert an integer to a string in PHP.

    How do I check if a variable is an int in PHP?

    The is_int[] function checks whether a variable is of type integer or not. This function returns true [1] if the variable is of type integer, otherwise it returns false.

    Is a string PHP?

    Definition and Usage. The is_string[] function checks whether a variable is of type string or not. This function returns true [1] if the variable is of type string, otherwise it returns false/nothing.

    Chủ Đề