Christian Engel
Christian Engel

Reputation: 3778

Echo a very large number

I have a unusual problem which I have no idea how to solve.

I have a JSON file, where a application id is stored, namely the following:

"app_id": "363924477024846"

I read my JSON file from the HDD and parse it with json_decode() to use it in my application. However, at one point, I want to have the app-id sent to the browser. The problem is, if I echo that variable out, its printed as following:

2.7110712626725E+14

Is there any way to prevent this? I don't need it to be threated as a number by PHP since I am not doing any calculations with it - a string would be fine. But since its represented by numbers only, it seems that json_decode() threats it as a number, even tough I put quotes around it (which should indicate a string) or maybe PHP just does stupid type hinting in this case, I don't know...

Any ideas on how to handle that?

Upvotes: 15

Views: 9477

Answers (5)

sics
sics

Reputation: 1318

I had the same problem here: Simply use phps number_format function, which solves this issue:

$number = "363924477024846";
echo number_format($number, 0, '', '');

// 363924477024846

Upvotes: 23

Mufaka
Mufaka

Reputation: 3444

It looks like json_decode has an option to treat big integers as strings.

json_decode($json, false, 512, JSON_BIGINT_AS_STRING)

Upvotes: 5

Greg K
Greg K

Reputation: 11120

If you can change the JSON file contents, have you tried wrapping the application ID in quotes, like so:

"app_id": "'363924477024846'"

As clentfort has said, you're exceeding the max value for a 32bit integer (~2.1bn signed)

Upvotes: 0

Scott
Scott

Reputation: 12356

A quick and dirty solution would be to add some character at the beginning or end of your number to force PHP to treat it as a string. Maybe intstead of "363924477024846" use "z363924477024846" and then remove the z when you need to use it. Obviously append this before you send it.

Upvotes: 1

DiverseAndRemote.com
DiverseAndRemote.com

Reputation: 19888

try casting it to a string

echo((string)$theNumber);

Upvotes: 1

Related Questions