函数来检查值是int还是float而不是PHP中的字符串

时间:2017-07-30 22:09:05

标签: php

是否有任何内置函数来检查值是否为数字,在任何整数类型中,如int,float但不是string。 对于" 2",is_numeric返回true。我应该通过is_int和is_float检查吗?

我想要的功能应该返回"无效值"当$ a和$ b不是数字时:

function myFunction($a, $b, $sign){}

2 个答案:

答案 0 :(得分:2)

这不是本身的答案,但这太过于无法发表评论:

function isFloatOrInt($var)
{
    $type = gettype($var);

    switch ($type) {
        case 'integer':
        case 'double':
            return true;
        case 'string':
            //check for number embedded in strings "1" "0.12"
            return preg_match('/^[0-9]+(?:\.[0-9]+)?$/', $var);
        default:
            return false;
}

如果您认为数字的字符串版本仍然是数字,那么Preg匹配在此处很有用。

你说

  

但不是字符串

但这是否意味着此'string'或此'10'代替10,例如。一个也是数字的字符串?

可能有很多方法可以做到这一点,但有一些优势,所以它在很大程度上取决于您的需求。例如octet一个数字0777或指数12e4甚至十六进制0xf4c3b00c

答案 1 :(得分:1)

is_numeric($value) && !is_string($value)

这就是我要找的东西