json_decode long integer、精度の損失、なぜ window xp
次の PHP 変換では、tid の精度が失われ、最後の 4 桁 6788 が 7000 になります。なぜですか?
str='{"receiver_address":"四川省遂寧市","receiver_city":"遂寧市","receiver_district":"社虹県","receiver_mobile":"15228662928","receiver_name" : "Cai","receiver_state":"四川省","receiver_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 スクリプトで整数に変換し直すことです。