在PHP中将大数字转换为可用字符串

时间:2016-06-15 00:24:17

标签: php

我从API获取数据,它包含一个长数字,例如:7979798798798798798798797987。我需要将这个数字放入一个URL,这样变量不需要是一个数字,但我确实需要它保持完整。目前PHP正在自动将大数字转换为科学记数法。我已经尝试过像sprintf这样的所有东西,并试图把它作为一个字符串,但它不适合我。

这是一个演示:

$myvar = 7979798798798798798798797987; //can't change this as this is from api

echo $myvar; // needs to print out 7979798798798798798798797987

1 个答案:

答案 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
?>