PHP /服务器无法处理大数?

时间:2013-06-05 08:41:55

标签: php string api 64-bit 32-bit

我们正在使用付款API向我们提供客户令牌ID,然后我们就可以访问API上的个人数据。

客户令牌ID的示例是9253691936959900,但PHP将其转换为9.2536919369599E + 15(例如)。显然9.2536919369599E + 15是科学记数法,对我们没用,我们用它来调用API。

我们尝试了各种转换,例如number_format(9.2536919369599E + 15,16),但没有任何乐趣。

我们使用的是32位服务器和PHP 5.4.15。

我们已经耗尽了几乎所有选项,即使API的开发人员也在努力查看问题。他们确定客户令牌ID是作为字符串发送的,但由于某种原因,我们的系统将其解释为整数并将其转换为科学记数法。

非常感谢任何帮助或建议。

万分感谢:)

2 个答案:

答案 0 :(得分:2)

PHP限制为最大整数,即2^63-1 = 9223372036854775807(这适用于64位平台。其他平台可能远低于此值。)

任何大于max的数字都将转换为浮点数。

你几乎没有选择:

  1. 使用字符串作为ID。
  2. 使用小于2^63
  3. 的数字
  4. 使用PHP GMP library

答案 1 :(得分:-1)

如果您的API提供程序以JSON格式返回密钥:

$key = '{"key":999999999999999999999999999999999999999999999999999999}' ;
$a = json_decode($key, true, 2 , JSON_BIGINT_AS_STRING);

print $a['key'];

以上打印结果为:99999999999999999999999999999999999999999999999999999999