PHP:如何检查变量是否为 "large integer"

标签 php

我需要检查参数(字符串或整数或 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/

相关文章:

javascript - JavaScript 函数无法引用动态图像 ID

php - 通过 API 保护来自 Android 应用程序的 GET 请求

php - Drupal 7 中的多种形式

php - 按原样查看 wordpress 上的主题(没有您的网站内容)

php - 强制调用父方法

php - Laravel 为路由提供数组,并非所有值都是必需的

php - 哎呀,看起来像出事了。尝试在内置服务器上运行时 Laravel 5 出现错误

php - 显示相关内容的链接

php - 使用php导入大型mysql数据库

php - Sphinx的这个SQL语句有什么问题吗?