php:int()函数是否与bigint类型等效?(int()将字符串剪切为2147483647)

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

php:bigint类型的等效
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一样)。