勉強がてらにTwitterのクライアントっぽいものを作ったりしてるんだけど、PHPでAPIからjsonを受けとってjson_decodeするときに、idの値がどうもおかしい。すべて同じ値になってしまっていた。
で、調べてみると、json_decodeしたときに整数の値が2147483647を越えていると、すべて2147483647になってしまうということらしい。
PHPのバグとしては既に修正されているようで、実際自分のローカルのMAMP環境では再現しなかった。しかし、実際にアプリを動かすサーバはレンタルなので、対処しなければいけない。
とりあえず、今回の場合は整数なのはidの部分だけなので、下記のようなコードを加えることで対処できる。
$json = preg_replace( '/id":(\d+)/', 'id":"\1"', $json );
こんな感じで、オーバーフローをおこしている部分を文字列として置換してやればOK。
PHPの最新版を入れてれば大丈夫だと思うけど、同じ問題で悩んでる人もいるかもしれないので、一応メモ。