Как убрать float?

Рейтинг: 2Ответов: 2Опубликовано: 04.05.2015

Здравствуйте. Есть такой JSON:

{
  "cardPAN": 4916833222473083,
  "text3": "--",
  "text2": "--"
}

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

P.S: Номер карты случайно генерированный.

Ответы

▲ 3Принят

Правильнее всего будет перед отправкой преобразовывать cardPAN в строку.
Поскольку данное значение - это не номер, а набор знаков. И поскольку никакие арифметические операции над ним не планируются, то во избежание подобных конфликтов желательно обрабатывать его как строку.

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

▲ 4

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

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

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