2015-04-28 81 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);