PHP:如何检查变量是否为“大整数”

前端之家收集整理的这篇文章主要介绍了PHP:如何检查变量是否为“大整数”前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我需要检查参数(字符串或者int或者float)是否是一个“大”整数. “大整数”我的意思是它没有小数位,可以超过 PHP_INT_MAX.它被用作msec时间戳,内部表示为float.

ctype_digit想到但强制字符串类型.作为辅助检查的is_int限制为PHP_INT_MAX范围,is_numeric将接受带小数位的浮点,这是我不想要的.

依靠这样的东西是安全的,还是有更好的方法

if (is_numeric($val) && $val == floor($val)) {
    return (double) $val;
}
else ...
所以基本上你想检查一个特定的变量是否是整数的?
function isInteger($var)
{
    if (is_int($var)) {
        // the most obvIoUs test
        return true;
    } elseif (is_numeric($var)) {
        // cast to string first
        return ctype_digit((string)$var);
    }
    return false;
}

请注意,使用浮点变量来保持较大的整数将失去精度,并且当足够大时将变成一个分数,例如9.9999999999991E 36,这显然会失败上述测试.

如果给定环境(32位或64位)的值超过INT_MAX,我建议使用gmp,并以字符串格式持久保留数字.

猜你在找的PHP相关文章