我需要检查参数(字符串或整数或 float )是否为“大”整数。 “大整数”是指它没有小数位并且可以超过 PHP_INT_MAX
。它用作毫秒时间戳,内部表示为 float 。
ctype_digit
浮现在脑海中,但强制执行字符串类型。 is_int
因为二次检查仅限于 PHP_INT_MAX
范围并且 is_numeric
将接受带小数位的 float ,这是我不想要的。
依赖这样的东西是否安全,或者是否有更好的方法:
if (is_numeric($val) && $val == floor($val)) {
return (double) $val;
}
else ...
最佳答案
我推荐二进制计算器,因为它不关心长度和最大字节数。它将您的“整数”转换为二进制字符串并以这种方式进行所有计算。
BC 数学库是在 PHP 中进行 RSA key 生成/加密的唯一可靠方法,因此它可以轻松满足您的要求:
$userNumber = '1233333333333333333333333333333333333333312412412412';
if (bccomp($userNumber, PHP_INT_MAX, 0) === 1) {
// $userNumber is greater than INT MAX
}
第三个参数为 float
关于PHP:如何检查变量是否为 "large integer",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20607296/