У меня необычная проблема, о которой я понятия не имею, как ее решить.
У меня есть файл JSON, где хранится идентификатор приложения, а именно:
"app_id": "363924477024846"
Я прочитал свой файл JSON с жесткого диска и проанализировал его с помощью json_decode (), чтобы использовать его в своем приложении. Однако в какой-то момент я хочу, чтобы приложение-идентификатор отправляется в браузер. Проблема в том, что если я отгоню эту переменную, ее напечатать следующим образом:
2.7110712626725E+14
Есть ли способ предотвратить это? Мне не нужно, чтобы это было обработано как число PHP, потому что я не делаю никаких расчетов с ним – строка будет в порядке. Но поскольку он представлен только числами, кажется, что json_decode () угрожает ему как число, даже жестко я помещаю кавычки вокруг него (что должно указывать на строку), или, может быть, PHP просто делает глупый тип намека в этом случае, я не знаю …
Любые идеи о том, как с этим справиться?
У меня была такая же проблема: просто используйте функцию php number_format, которая решает эту проблему:
$number = "363924477024846"; echo number_format($number, 0, '', ''); // 363924477024846
Похоже, что json_decode имеет возможность рассматривать большие целые числа как строки.
json_decode($json, false, 512, JSON_BIGINT_AS_STRING)
попробуйте перевести его в строку
echo((string)$theNumber);
Быстрое и грязное решение заключалось бы в том, чтобы добавить символ в начале или конце вашего номера, чтобы заставить PHP обрабатывать его как строку. Возможно, вместо «363924477024846» используйте «z363924477024846», а затем удалите z, когда вам нужно его использовать. Очевидно, добавьте это, прежде чем отправлять его.
Если вы можете изменить содержимое файла JSON, попробуйте ли вы обернуть идентификатор приложения в кавычках, например:
"app_id": "'363924477024846'"
Как сказал clentfort, вы превысили максимальное значение для 32-битного целого (~ 2,1 млрд. Подписей)