Intereting Posts

Эхо очень большое число

У меня необычная проблема, о которой я понятия не имею, как ее решить.

У меня есть файл 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 млрд. Подписей)