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