PHP JSON 错误值

JSON数据


   "data":{ 

      "count":1,

      "orders":[ 

         { 

            "voucher_platform":0,

            "voucher":0.00,

            "order_number":270269205514864,

            "voucher_seller":0,

            "created_at":"2019-12-15 18:03:44 +0800",

            "gift_option":false,

            "statuses":[ 

               "delivered"

            ],

            "address_billing":{ 

               "last_name":"",

               "address5":"Sample",

               "address4":"Sample",

               "first_name":"Sample name"

            },

            "extra_attributes":"",

            "order_id":270269205514864,

            "gift_message":"",

            "remarks":"",

            "address_shipping":{ 

               "country":"",

               "address3":"",

               "address2":"",

               "city":"",

               "phone":"",

            }

         }

      ]

   },

   "code":"0",

   "request_id":"0b0da12615764049458554660"

}

我的值有问题order_number,而不是得到正确的值,270269205514864我得到的结果是2.7087557899228E+14。


我认为这个问题有点与字符串和数值有关,但我不知道如何解决它。


这是我的一些与解码 json 数据相关的代码。


...

$data = ... //assuming the json is already initialized


$data = json_decode($data, true); //decode the json

$OrderNumber = $data['data']['orders'][0]["order_number"]; //get order number

$CustomerName = $data['data']['orders'][0]["address_billing"]["first_name"]; //get name


echo $OrderNumber;

echo '<br/>';

echo $CustomerName;

echo '<br/>';

echo 'JSON DATA:';

die($data);

无论如何,JSON 来自另一台服务器,所以我无法编辑它们。我只收到 JSON。


桃花长相依
浏览 93回答 2
2回答

有只小跳蛙

PHP 正在将您的数字转换为科学计数法。您可以使用该number_format()函数对其进行转换以控制其显示方式。在您的情况下,假设order_number始终是一个不应该有任何千位分隔符的正整数,您需要更改. 因此,这就是我要做的number_format()// Get the order number$OrderNumber = $data['data']['orders'][0]["order_number"];// Make sure it is formatted properly$OrderNumber = number_format($OrderNumber, 0, '.', ''); // Notice that the last parameter is set to empty string, to override the default and make sure there is no thousands separator请注意,这将导致order_number成为一个数字。如果您想order_number作为字符串处理,那么您应该添加以下代码行strval()$OrderNumberAsString = strval($OrderNumber);

www说

2.7087557899228E+14相当于270269205514864。2.7087557899228E+14 是科学计数法。要进入原始或正常形式,请使用:number_format($number, 6),其中 6 是小数点后的前导数字长度。$OrderNumber&nbsp;=&nbsp;number_format($data['data']['orders'][0]["order_number"],&nbsp;6);
打开App,查看更多内容
随时随地看视频慕课网APP