0

我们正在使用一个支付 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 是作为字符串发送的,但出于某种原因,我们的系统将其解释为整数并将其转换为科学记数法。

任何帮助或建议将不胜感激。

太感谢了 :)

4

2 回答 2

2

PHP 被限制为最大整数,即2^63-1= 9223372036854775807(这是针对 64 位平台的。其他平台可能远小于此)。

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

你有几个选择:

  1. 使用字符串作为 ID。
  2. 使用小于的数字2^63
  3. 使用PHP GMP 库
于 2013-06-05T08:48:35.687 回答
-1

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

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

print $a['key'];

上面打印的结果是:999999999999999999999999999999999999999999999999999999

于 2013-06-05T12:39:59.777 回答