麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 語言 > PHP > 正文

json_decode 整型溢出解決方法

2024-09-04 11:47:50
字體:
來源:轉載
供稿:網友

這個有點像mysql int類型超過了就溢出,而我們只要用bigint就可以了,那么因為php中int數據范圍的問題,所以就也有可能出現這類問題。

編碼過程中遇到個錯誤,就是在處理json時,數值較大的int值在解碼后數據被損壞,比如:

  1. $array = array
  2.     "id1" => 2147483647, 
  3.     "id2" => 2147483648 
  4. ); 
  5. $json = json_encode($array); 
  6. $out = json_decode($json, true); 
  7. var_dump($out); 
  8. 理論上應該看到: 
  9. array(2) { 
  10.     ["id1"]=>int(2147483647) 
  11.     ["id2"]=>int(2147483648) 
  12. 但實際在我的電腦上卻得到: 
  13.  代碼如下 復制代碼 
  14. array(2) { 
  15.     ["id1"]=>int(2147483647) 
  16.     ["id2"]=>int(-2147483646) 

這是由PHP整數值范圍決定的,而這個范圍依賴于操作系統。在32位操作系統中,PHP的整數最大值是2147483647,你可以通過輸出PHP_INT_MAX看到。

一般情況下,你賦值一個很大的數,PHP會自動判定這個數值的范圍并自動轉換類型,如:

  1. $large_number = 2147483647; 
  2. var_dump($large_number);      // int(2147483647) 
  3.  
  4. $large_number = 2147483648; 
  5. var_dump($large_number);       // float(2147483648) 
  6.  
  7. $million = 1000000; 
  8. $large_number =  50000 * $million
  9. var_dump($large_number);      // float(50000000000) 

但是在json_decode方法中沒有進行這種檢測,這是PHP(舊版本)的bug,在5.3以后的版本,就不存在這個問題了。

如果你不想更新你的PHP,那還有個辦法,就是將數字轉為字符串。還是以上面的代碼為例:

  1. $array = array
  2.     "id1" => 2147483647, 
  3.     "id2" => 2147483648 
  4. ); 
  5. $json = json_encode($array); 
  6.  
  7. $json = preg_replace('/("idd":)(d{9,})/i''${1}"${2}"'$json); 
  8.  
  9. $out = json_decode($json, true); 
  10. var_dump($out); 

當然,這個怎么替換是按需而定的,而且需要比較細致的測試。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 久久久久久久久淑女av国产精品 | 91在线播放国产 | 午夜在线观看视频网站 | 99精品视频免费看 | 欧美视频在线一区二区三区 | 免费永久看羞羞片网站入口 | 在线成人免费av | 久久精品久久久久 | 粉嫩粉嫩一区二区三区在线播放 | 国产视频在线播放 | 成人在线观看地址 | 日韩视频在线不卡 | 精品在线视频播放 | 性生活视频一级 | 日本中文字幕高清 | 欧美性生交xxxxx久久久缅北 | 91精品国产91 | h视频在线免费观看 | 92精品国产自产在线 | 日本成人在线免费 | 国产精品一区自拍 | 久久久久久久久久美女 | 国产亚洲黑人性受xxxx精品 | 国产精品伦视频看免费三 | 中文字幕精品在线视频 | 免费国产一区 | 一级尻逼视频 | 国产一区二区三区欧美 | 国产青草视频在线观看 | 黄色大片免费看 | 免费黄色在线电影 | 国产成人高潮免费观看精品 | a级黄色片视频 | 精品一区二区三区免费爱 | 日美av在线 | 成av在线 | 日韩av片网站 | 欧美一级鲁丝片免费看 | 羞羞视频免费网站男男 | japanese末成年free | 欧美女优一区 |