ホームページ  >  記事  >  バックエンド開発  >  json_decode long integer、精度の損失、ウィンドウ XP の理由、その対処方法

json_decode long integer、精度の損失、ウィンドウ XP の理由、その対処方法

WBOY
WBOYオリジナル
2016-06-13 13:52:37716ブラウズ

json_decode long integer、精度の損失、なぜ window xp
次の PHP 変換では、tid の精度が失われ、最後の 4 桁 6788 が 7000 になります。なぜですか?

str='{"receiver_address":"四川省遂寧市","re​​ceiver_city":"遂寧市","re​​ceiver_district":"社虹県","re​​ceiver_mobile":"15228662928","re​​ceiver_name" : "Cai","re​​ceiver_state":"四川省","re​​ceiver_zip":"100218","sid":"114757372016788","tid":114757372016788}';

print_r(json_decode($str ) );exit;

テスト環境:
A: centOS5+php5* は正しく変換できます。
B: window xp +php526+Apache2.2、エラー、精度が失われます。

ご清聴ありがとうございます。

-----解決策---------
114757372016788 数値だと32ビットマシンのlong整数で表現できる範囲を超えます

sidと同じ文字列として扱うべきです


------解決策---------
エンコーディングの問題
------解決策----------------------
数値の両側に引用符を追加してみてください。文字列を形成してみてください。
------解決策------------------
Linux にインストールされている PHP モジュールと Windows にインストールされている PHP モジュールが異なるか、PHP の構成が異なるため、json_decode の計算方法が異なります。

その方法がわからない場合、最も簡単な方法は、文字列として処理し、js スクリプトで整数に変換し直すことです。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。