14

我有一个不寻常的问题,我不知道如何解决。

我有一个 JSON 文件,其中存储了应用程序 ID,即以下内容:

"app_id": "363924477024846"

我从 HDD 读取我的 JSON 文件并使用 json_decode() 解析它以在我的应用程序中使用它。但是,在某一时刻,我希望将 app-id 发送到浏览器。问题是,如果我回显该变量,其打印如下:

2.7110712626725E+14

有什么办法可以防止这种情况发生吗?我不需要它被 PHP 威胁为一个数字,因为我没有用它做任何计算 - 一个字符串就可以了。但由于它仅由数字表示,似乎 json_decode() 威胁它为数字,即使我在它周围加上引号(应该表示一个字符串)或者 PHP 在这种情况下只是做了愚蠢的类型提示,我不知道...

关于如何处理的任何想法?

4

5 回答 5

22

我在这里遇到了同样的问题:只需使用 phps number_format 函数,即可解决此问题:

$number = "363924477024846";
echo number_format($number, 0, '', '');

// 363924477024846
于 2012-09-26T19:39:19.750 回答
5

看起来json_decode可以选择将大整数视为字符串。

json_decode($json, false, 512, JSON_BIGINT_AS_STRING)
于 2012-09-26T19:41:23.183 回答
1

尝试将其转换为字符串

echo((string)$theNumber);
于 2012-09-26T19:36:34.870 回答
1

一个快速而肮脏的解决方案是在数字的开头或结尾添加一些字符,以强制 PHP 将其视为字符串。也许代替“363924477024846”使用“z363924477024846”,然后在需要使用它时删除z。显然在发送之前附加它。

于 2012-09-26T19:37:27.740 回答
0

如果您可以更改 JSON 文件内容,您是否尝试过将应用程序 ID 用引号括起来,如下所示:

"app_id": "'363924477024846'"

正如 clentfort 所说,您超过了 32 位整数的最大值(约 21 亿有符号)

于 2012-09-26T19:39:39.033 回答