我从API获取数据,它包含一个长数字,例如:7979798798798798798798797987
。我需要将这个数字放入一个URL,这样变量不需要是一个数字,但我确实需要它保持完整。目前PHP正在自动将大数字转换为科学记数法。我已经尝试过像sprintf这样的所有东西,并试图把它作为一个字符串,但它不适合我。
这是一个演示:
$myvar = 7979798798798798798798797987; //can't change this as this is from api
echo $myvar; // needs to print out 7979798798798798798798797987
答案 0 :(得分:0)
如果PHP遇到一个超出整数类型边界的数字,它将被解释为一个浮点数(这就是你所拥有的)int但是float的精度有限,大约为14位数。
如果数字少于14位,您可以使用sprintf('%0.0f',$number)
;
在您的情况下,您需要使用源数据(json),因为您无法从当前形式(浮点)生成该数字的精确表示。
您可以使用json_decode
中的JSON_BIGINT_AS_STRING
选项
样本测试代码
<?php
$json = '{"number":7979798798798798798798797987, "data":"some other data"}';
$output=json_decode($json, false, 512, JSON_BIGINT_AS_STRING);
echo $output->number; \\output 7979798798798798798798797987
?>