Friday, August 26, 2011

32bit 系統下 json_decode 遇到 BIGINT 的問題

在 32bit 系統下處理 Facebook 的 uid 時, 一定會遇到 json_decode 時, php 把 uid 轉成 float 的情形, 大部分的情形只要把 uid 轉成 string 就能做其他的事了, 以下是正確的轉型技巧

$json = '{"uid":100000123456789}';
$arr = json_decode($json, true);
// $arr = array(1) {
//   ["uid"]=>
//   float(1.0000012345678E+14)
// }
$s2 = sprintf ( "%.0f", $arr['uid'] );
// $s2 = string(15) "100000123456789"

No comments: