0

json文字列をデコードするときに問題が発生します

私のPHPバージョンは5.4.4-7で、OSはDebianamd64です。

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 に答える