2013-06-05 46 views
0

我们正在使用支付API,向我们发送客户令牌ID,然后我们可以访问API上的个人数据。PHP /服务器无法处理大量数据?

客户令牌ID的一个例子是9253691936959900,然而PHP将它转换为9.2536919369599E + 15(例如)。显然9.2536919369599E + 15是一种科学记数法,对我们来说我们用它来调用API是没有用的。

我们已经尝试过各种转换,如number_format(9.2536919369599E + 15,16),但没有喜悦。

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

我们已经用尽了几乎所有的选项,甚至API的开发者都在努力看到这个问题。他们肯定客户令牌ID是作为字符串发送的,但由于某种原因,我们的系统将其解释为整数并将其转换为科学记数法。

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

由于一百万:)

+1

你可以尝试迫使它字符串时,PHP临危值即是$ var =(string)$ var2; – Martin

+0

@Martin它已经在$ var2中转换为科学记数法,所以实际上您正在投射$ var2的科学记数法演示而不是大整数。 – bolbol

+0

@bolbol发送时是否可以不投射字符串而不是接收时?还是现在还没有注释? – Martin

回答

2

PHP被限制为最大整数是2^63-1 = 9223372036854775807(这是64位的平台。其他平台可以比这少得多)。

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

您有几种选择:

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

如果你的API提供者返回JSON格式的关键:

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

print $a['key']; 

上面打印的结果是:999999999999999999999999999999999999999999999999999999

+0

我很高兴知道为什么答复得到反对票。 – bolbol