Q:

Как убрать float?

Здравствуйте. Есть такой JSON:
{
  "cardPAN": 4916833222473083,
  "text3": "--",
  "text2": "--"
}

Если сделать json_decode, получится:
["cardPAN"]=> float(4.91683322247E+15). Как можно перевести cardPAN в нормальный вид?
P.S: Номер карты случайно генерированный.

A:

Часто помогает чтение официальной документации:
http://php.net/manual/ru/function.json-decode.php 

options
  Битовая маска опций декодирования JSON. В настоящий момент поддерживается только JSON_BIGINT_AS_STRING (по умолчанию большие целые числа приводятся к числам с плавающей запятой (float))

Далее эту строку можно преобразовать в BIGINT, если требуется.

A:

Правильнее всего будет перед отправкой преобразовывать cardPAN в строку.
Поскольку данное значение - это не номер, а набор знаков. И поскольку никакие арифметические операции над ним не планируются, то во избежание подобных конфликтов желательно обрабатывать его как строку.
Ну а чтобы буквально ответить на вопрос, то потребуется 64-битный РНР.
В 32-битной версии результат json_decode() по умолчанию всегда будет таким. Как показано в соседнем ответе, есть специальный флаг, который исправляет это поведение.

