回声非常多

时间:2012-09-26 19:34:35

标签: php

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

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

"app_id": "363924477024846"

我从硬盘中读取了我的JSON文件并用json_decode()解析它以在我的应用程序中使用它。 但是,有一次,我想将app-id发送到浏览器。问题是,如果我回显该变量,则打印如下:

2.7110712626725E+14

有什么方法可以阻止这种情况吗?我不需要将它作为PHP的数字进行威胁,因为我没有用它进行任何计算 - 字符串就可以了。但由于它只用数字表示,似乎json_decode()威胁它作为一个数字,甚至很难我在它周围加上引号(这应该表示一个字符串)或者PHP在这种情况下只是做愚蠢的类型暗示,我不知道...

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

5 个答案:

答案 0 :(得分:17)

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

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

// 363924477024846

答案 1 :(得分:5)

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

json_decode($json, false, 512, JSON_BIGINT_AS_STRING)

答案 2 :(得分:1)

尝试将其转换为字符串

echo((string)$theNumber);

答案 3 :(得分:1)

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

答案 4 :(得分:0)

如果您可以更改JSON文件内容,您是否尝试将应用程序ID包装在引号中,如下所示:

"app_id": "'363924477024846'"

正如clentfort所说,你超过32位整数的最大值(约21亿签名)