Оказывается, json_decode
по умолчанию приводит большие числа к числу с плавающей точкой.Эта опция может быть перезаписана при вызове функции:
$json_array = json_decode($json_string, , , 1);
Я основываю это только на основной документации, поэтому, пожалуйста, протестируйте и дайте мне знать, если она работает.