0

解码 json 字符串时出现问题

我的 PHP 版本是 5.4.4-7,我的操作系统是 Debian amd64。

JSON字符串是:

{"status":"success","account":{"buy_title":"KGP ID","birthday":0,"sex":0,"phone_number":"","avatar":"http:\/\/\/default\/avatar_default.png","password":"","virtual_id":"1348718752795","point":0,"quota":2,"level":1,"remain":3413838437,"token":"9702040ea11e2b87d005056b771ea","email":"ngokhat@gmail.com","buy_link":"http:\/\/id.kgp.vn","fullname":""}}*

我想得到保持= 3413838437和virtual_id = 1348718752795但是当我得到

$result = json_decode($json, true, 512, JSON_BIGINT_AS_STRING);

$result['account']['remain']它返回 2147483647 并$result['account']['virtual_id]返回 2147483647 。我不知道为什么我已经搜索并找到了https://groups.google.com/forum/?fromgroups=#!topic/php-json/c-zOACBlCPs但链接补丁已死

如何解决?

4

3 回答 3

3

ini_set('精度', 20);

或在 php.ini 中搜索精度并将精度输入 20。

于 2013-10-24T01:09:29.287 回答
2

这对我来说很好:

php > print_r(json_decode($json, true));
Array
(
    [status] => success
    [account] => Array
        (
            [buy_title] => KGP ID
            [birthday] => 0
            [sex] => 0
            [phone_number] => 
            [avatar] => http:///default/avatar_default.png
            [password] => 
            [virtual_id] => 1348718752795
            [point] => 0
            [quota] => 2
            [level] => 1
            [remain] => 3413838437
            [token] => 9702040ea11e2b87d005056b771ea
            [email] => ngokhat@gmail.com
            [buy_link] => http://id.kgp.vn
            [fullname] => 
        )

)

这是在 64 位 PHP 上运行的,因为您的 PHP_INT_SIZE 为 8。

于 2012-12-08T05:28:45.243 回答
0

抱歉,只是因为在数据库中我将​​此字段设置为 INT :D 我刚刚修改为 bigint 并且它可以正常工作!感谢支持!

于 2012-12-08T05:42:14.350 回答