is_numeric() vs. is_float() vs. is_int()

前端 未结 2 1779
感动是毒
感动是毒 2021-02-05 12:45

My understanding is...

if is_numeric($input) === true

then either

is_float($input) === true OR

is_int($input) =

相关标签:
2条回答
  • 2021-02-05 12:57

    See the docs. A numeric value can be:

    • An integer
    • A float
    • Exponential
    • A positive Hexadecimal
    • A string containing most of these
    0 讨论(0)
  • 2021-02-05 13:10

    See PHP's documentation on is_numeric. It talks about everything that is allowed, and it's more than is_float and is_int.


    It's also important to note that is_int only works on things that are type integer, meaning string representations are not allowed. This is a common problem when verifying that form input is an integer. You should use filter_var or something from the filter family with the filter FILTER_VALIDATE_INT. For floats, use FILTER_VALIDATE_FLOAT.


    Also, if the reason you are trying to check for an integer is to validate a parameter as being an int, then in PHP 7 you can do this:

    function foo(int $i) {
        // $i is guaranteed to be an int (is_int) will be true
    }
    

    PHP 7 has two different modes for converting to int; this answer explains it a bit more.

    Note that this is probably not what you want if you are validating the contents of a form element. Use the filter_var solution for that.

    0 讨论(0)
提交回复
热议问题