php判断是否为数字

判断是否为数字

使用is_numeric函数,可以判断数字或者数字字符串

$variables = [
    0,
    36,
    3.6,
    .36,
    '36',
    'a36',
    044, //8进制
    0x24, //16进制
    1337e0
];

结果

int(0) is number : Y // 0
int(36) is number : Y // 36
float(3.6) is number : Y // 3.6
float(0.36) is number : Y  // .36
string(2) "36" is number : Y // '36'
string(3) "a36" is number : N // 'a36'
int(36) is number : Y // 044
int(36) is number : Y // 0x24
float(1337) is number : Y // 1337e0

判断是否为整数

使用filter_var($v, FILTER_VALIDATE_INT) === false,这个方法可以支持整数字符串(is_int和is_integer不支持判断整数字符串)

$variables = [
    0,
    36,
    3.6,
    .36,
    '36',
    'a36',
    044, //8进制
    0x24, //16进制
    1337e0,
    1337e-1
];

foreach ($variables as $v)
{
    $str = var_dump($v).'is integer :';
   //注意filter_var如果匹配的话将返回匹配的值,注意0的情况
    if (filter_var($v, FILTER_VALIDATE_INT) === false) {
        echo "{$str} N";
    }
    else {
        echo "{$str} Y";
    }
    
    echo "<br>";
}

结果

int(0) is integer : Y // 0
int(36) is integer : Y // 36
float(3.6) is integer : N // 3.6
float(0.36) is integer : N // .36
string(2) "36" is integer : Y //'36'
string(3) "a36" is integer : N // 'a36'
int(36) is integer : Y // 044
int(36) is integer : Y // 0x24
float(1337) is integer : Y //1337e0
float(133.7) is integer : N //1337e-1