我正在使用SOAPclient调用方法,并且该方法(远程外部SOAP Web服务)返回一个19位数字。我无法控制返回的内容。当我打印此数字的值时,只有前16位数字是准确的。 我已经尝试了类型转换,GMP等。但是当php根据Web服务调用的结果将值赋给变量时,看起来已经丢失了完整的19位数字。所以无法检索该值。
$client = new SoapClient($sccSystemWSDL);
try{
$sessionID = $client->logonUser($adminUser,$passWord);
}
在64位机器上我没有这个问题。但现在我必须在32位机器上运行它,直到现在都没有运气。
答案 0 :(得分:5)
答案 1 :(得分:1)
Cryptic使用BCMath的答案很好。或者,您可以使用phpseclib的BigInteger类,它是BCMath 和 GMP的包装器,并且还具有自定义PHP回退。
您遇到的问题是因为PHP没有内置支持超过其运行的系统的最大整数值的整数。相反,它仅限于操作系统支持的内容。对于32位系统,这意味着最大整数值为2 ^ 31,而在64位系统上,此值为2 ^ 63(保存一位以对值进行签名,例如指示它是正还是负)。