2015-04-28 39 views
0

当我json解码json在我的PHP中的一个数值被改变。我的JSON在下面给出:json数值在php上改变json_decode

[ 
        { 
         "__m":"m_0_7p" 
        }, 
        100001572061234, 
        null, 
        "profile_friends", 
        "pb_friends_tl", 
        "\/ajax\/add_friend\/action.php", 
        "", 
        true, 
        null, 
        false, 
        null, 
        null, 
        "friends_tab", 
        [ 

        ] 
       ] 

JSON的用于上述JSON解码输出是

Array ([0] => stdClass Object ([__m] => m_0_7o) [1] => 1.000091378372E+14 [2] => [3] => profile_friends [4] => pb_friends_tl [5] => /ajax/add_friend/action.php [6] => [7] => 1 [8] => [9] => [10] => [11] => [12] => friends_tab [13] => Array ()) 

其中 '100001572061234' 改变成1.000091378372E + 14。不知道为什么会发生这种情况。有人请帮助我。谢谢...

+1

当PHP显示数字时,它使用php.ini精度设置决定是显示所有数字还是使用科学格式.....这是一个显示设置,它不会在内部更改值 –

+1

但是,对于32位PHP中的有符号整数,该值太大,因此它将被视为浮动在PHP –

+0

@MarkBaker谢谢。如何解决这个问题...... – winnyboy5

回答

1

当PHP显示数字时,它使用php.ini精度设置来决定是显示所有数字还是使用科学格式.....这是一个显示设置,它不在内部更改值。

然而,该值是在32位PHP有符号整数太大,所以它会被当作PHP中的浮动

从PHP 5.4.0,你必须使用option flags来确定一个选项如何处理大整数值

$decoded = json_decode($encoded, false, null, JSON_BIGINT_AS_STRING);