我使用gmp_init以便我可以使用大数字。在json编码之后是否可以显示没有双引号的值?
<?php
$data = ['key' => gmp_strval(gmp_init('0x6252f8774def5e344'))];
echo json_encode($data); // {"key":"113359973681592656708"}
result:{"key":"113359973681592656708"}
expect:{"key":113359973681592656708}
我是否需要创建自定义json_encode方法?
更新1
JSON_NUMERIC_CHECK已关闭,但会降低一些精确度。
<?php
$data = ['value' => gmp_strval(gmp_init('0x6252f8774def5e344'))];
echo json_encode($data, JSON_NUMERIC_CHECK); // {"value":1.1335997368159e+20}
更新2
当我使用gmp_intval时,显示了意外的数字..失去了精度..?
<?php
$data = ['value' => gmp_intval(gmp_init('0x6252f8774def5e344'))];
echo json_encode($data); // {"value":2679509239335347012}
更新3
我现在正在制作一个公共API。此API返回大值作为数字。我正在引用这个API。
$ curl -s https://api.blockcypher.com/v1/eth/main/addrs/0x3f5ce5fbfe3e9af3971dd833d26ba9b5c936f0be/balance
{
"address": "3f5ce5fbfe3e9af3971dd833d26ba9b5c936f0be",
"total_received": 1869632244986662686850430,
"total_sent": 1856002482088823771866944,
"balance": 13629762897838914983486,
"unconfirmed_balance": -201611713184000000000,
}