php:int()函数是否与bigint类型等效?(int()将字符串剪切为2147483647)
php:bigint类型的等效php:int()函数是否与bigint类型等效?(int()将字符串剪切为2147483647),php,function,integer,int,biginteger,Php,Function,Integer,Int,Biginteger,php:bigint类型的等效int()函数是什么?(int()将大数字削减到2147483647) 例如: $bigint1="12312342306A_C243"; $bigint1=(int)$bigint1;//2147483647 但是我希望它是12342306。没有一个内置类型来执行您可以看到的这种类型的转换(从官方文档)。 无论如何,您可以使用来管理这个长整数。这可能不是您想要的答案,但是,为什么不切换到64位机器呢 在我的(64位Fedora)PC上,$bigint1的值为12
int()
函数是什么?(int()
将大数字削减到2147483647)
例如:
$bigint1="12312342306A_C243";
$bigint1=(int)$bigint1;//2147483647
但是我希望它是12342306。没有一个内置类型来执行您可以看到的这种类型的转换(从官方文档)。
无论如何,您可以使用来管理这个长整数。这可能不是您想要的答案,但是,为什么不切换到64位机器呢 在我的(64位Fedora)PC上,$bigint1的值为12312342306,如您所需。显然不可能在32位系统上完全为64位数字复制
(int)
。(int)返回一个int;在32位系统上,对于64位数字,最好能返回一个字符串——但这可能是您真正想要的
正如tialaramex所指出的,如果要使用64位整数进行大量工作,那么应该运行64位PHP。如果这不是一个选项,您可以使用来做一些工作,尽管我没有看到bcmath函数可以满足您的要求
我只需编写一个快速而肮脏的函数:
<?php
var_dump(toint("12312342306A_C243"));
function toint($str) {
return preg_match('/^[0-9]+/', $str, $matches) ? $matches[0] : 0;
}
我知道这是一个古老而有答案的问题,但为了将来人们了解这一点:
已更新
整数的大小取决于平台,尽管通常的最大值约为20亿(即32位有符号)。64位平台的最大值通常约为9E18,但在PHP7之前的Windows上除外,该值始终为32位。PHP不支持无符号整数。整数大小可以使用常量PHP_INT_size确定,最大值使用自PHP 5.0.5以来的常量PHP_INT_MAX确定,最小值使用自PHP 7.0.0以来的常量PHP_INT_MIN确定
我通过将其转换为float而不是int来解决这个问题:
(int)“8554104470”=>2147483647
(浮动)“8554104470”=>8554104470
$bigint1="12312342306A_C243";
$bigint1=(int)$bigint1;//2147483647
如果您只需要数字,直到第一个字符不是数字(正如您提到的,您只需要12312342306
),那么我建议您只需剪切该字符串,获取所需内容,然后将其转换为int
function parseBigInt(string $bigInt, string $delimiter = '_'): int
{
if (false !== ($pos = strpos($bigInt, $delimiter))) {
$bigInt = substr($bigInt, 0, $pos);
}
return (int)$bigInt;
}
$bigInt = parseBigInt('12312342306A_C243'); // '12312342306' as int
我用于大小大于4字节的整数的所有操作。您必须记住,所有操作数和结果都是字符串,但很容易作为参数值显示或传递到数据库。您是将此数字用于计算还是仅作为显示?如果您确实需要一个数字,建议将其转换为float,但它确实附带了一些警告。听起来您是在32位系统上运行php。PHP_INT_MAX将告诉您最大整数可以是多少。Numbers>PHP_INT_MAX将被转换为浮点数。我想确保它只包含数字,如果不包含数字,则将其切割为第一个非整数符号。结果将作为bigint(int是不够的)放入MySQL数据库。FlyungGuy,你说得对,32位系统:)这是本地机器,然后它将被上传到服务器…看起来这在中也有很好的介绍,当你上传到服务器时,如果是64位的话,你应该不会有问题,在那里投下更大的整数…有没有一个特定的GMP功能可以满足OP的要求?@FrankFarmer这真的取决于OP想用这个数字做什么。在他的问题中,他只展示了一个演员阵容。无论如何,为了管理这种int,GMP是一个很好的库(就像BCMath一样)。