PHP不返回json解码

时间:2016-07-14 00:31:12

标签: php json

我一直在尝试从steam API中获取一些数据,这些数据返回JSON,如下所示:

{"success":true,"lowest_price":"$2.76","volume":"345","median_price":"$2.60"}

但是它不会向其他地方使用的变量返回任何内容。它只显示0。

这是我的JSON代码,我做错了什么?

$steam1 = "http://steamcommunity.com/market/priceoverview/?currency=1&appid=730&market_hash_name=Chroma%20Case%20Key";
$json = file_get_contents($steam1);
$json_data = json_decode($json, true);
$median1= $json_data["median_price"];
$media1 = $median1 / '2.49';

感谢任何人提供的任何帮助。

3 个答案:

答案 0 :(得分:3)

json_decode()工作正常。问题是,当数字以$开头时,您无法进行算术运算。

您需要先删除价格开头的$字符,然后才能将其用作数字。否则,它将转换为0

$median1 = ltrim($json_data["median_price"], '$');
$media1 = $median1 / 2.49;

答案 1 :(得分:1)

$json_data["median_price"]中有一美元,因此必须先将其删除才能在任何算术中使用该字段。

此外,您需要使用数字作为除数而不是字符串。

这有效

<?php
$steam1 = "http://steamcommunity.com/market/priceoverview/?currency=1&appid=730&market_hash_name=Chroma%20Case%20Key";
$json = file_get_contents($steam1);
$json_data = json_decode($json, true);
$median1= $json_data["median_price"];
$median1 = substr($median1,0,1) == '$' ? substr($median1,1) : $median1;  //remove the $
$media1 = $median1 / 2.49;
echo $media1;

答案 2 :(得分:1)

=))我希望你开玩笑!

// It's ok:
$steam1 = "http://steamcommunity.com/market/priceoverview/?currency=1&appid=730&market_hash_name=Chroma%20Case%20Key";
$json = file_get_contents($steam1);
$json_data = json_decode($json, true);

// here you set $median1 = "$2.60", yeah, it's string (not float number)
$median1= $json_data["median_price"];

// here you trying to divide one string to another
$media1 = $median1 / '2.49';

这是非常有趣的方式)))

将最后一个字符串更改为:

if (preg_match('/([0-9]+(?:\.[0-9]+))/', $median1, $matches)) {
    $media1 = round($matches[1] / 2.49, 2);
} else {
    $media1 = 0;
}
echo $media1 . "\n";
祝你好运!