json_decode轉換時整形數字溢出問題學習

原文:json_decode 整型溢出解決方法


在上一篇文章中,介紹過PHP的JSON_DECODE函數處理json數據時,數值較大的int值在解碼後數據被損壞;如:

$array = array(
    "id1" => 2147483647,
    "id2" => 2147483648
);
$json = json_encode($array);
$out = json_decode($json, true);
var_dump($out);
理論上應該看到:

array(2) {
    ["id1"]=>int(2147483647)
    ["id2"]=>int(2147483648)
}

但實際上看到是:

array(2) {
    ["id1"]=>int(2147483647)
    ["id2"]=>int(-2147483646)
}

據這篇文章的作者稱,這個是php5.3以前的一個BUG;這個是json_decode過程中,沒有識別,自動轉換爲浮點;


可個人最近在使用新浪微博接口做數據鏈接過程中,也出現了進制轉換的問題,新浪範圍的數據中包含一個字符串,其包含的數字超出了php整形範圍,在decode過程中,自動轉換成了科學計數法的格式,好生麻煩,不知各位有麼有好的建議,我是沒有辦法,臨時使用正則,在出現此種情況的位置,添加了一些字母作爲開頭,這樣在轉換過程中就沒有上述問題了,之後在使用的時候,在把添加的字母使用正則去除!!

$jsons = preg_replace('/("status_id"):(\d{9,})/', '\\1:mm\\2', $json);



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章