2013-04-27 91 views
1

我是PHP新手。PHP JSON格式货币逗号

我的代码从Steam游戏的json数据中读取价格值。

http://store.steampowered.com/api/appdetails/?appids=8870 

问题是价格节点的值没有用美元和美分的逗号分隔符格式化。我的代码可以将美元和美分拼合在一起,但对于这种情况,这是正确的方法。另外,如果还有另一种更简单的方法来做我的新手代码,请随时告诉我它可以改进的地方。谢谢!

<?php 

$appid = '8870'; 

$ht = 'http://store.steampowered.com/api/appdetails/?appids=' . $appid; 

$fgc = file_get_contents($ht); 
$jd = json_decode($fgc, true); 

$gdata = $jd[$appid]['data']; 

$gname = $gdata['name']; 
$gprice = $gdata['price_overview']['final']; 
$gdesc = $gdata['detailed_description']; 

$gusd = substr($gprice, 0, -2); 
$gcent = substr($gprice, 2); 

echo $gname. '<br>'; 
echo 'Price: $' .$gusd. ',' .$gcent; 

?> 

如果我可以问一个问题......可以在价格数据又名$ gprice被添加到被取出另一个价格数据,返回一个总。

+2

貌似价格只是表述为“仙”的值,例如5999 = 59.99美元。尝试'number_format($ price/100,2)'。 – 2013-04-27 22:02:28

+0

$ gnprice = number_format($ gprice/100,2);成功了! – 2013-04-27 23:51:21

回答

1

我基本上是做除了它的简单得多,只是除以100,你在做什么:

打开的价格转换为一个float:

$gprice = $gprice/100; 

然后用money_format

参考: PHP Docs - money_format

你也可以做到这一点,但没有真正的需要。

$gprice = (int) $gdata['price_overview']['final']; 
0

转换不坏,但你也可以使用:

$gusd = $gprice/100; 

echo $gname. '<br>'; 
echo 'Price: $' .str_replace('.', ',', $gusd); 

或使用money_format,而不是取代,但它是一个更复杂一点。

也以添加另一个你可以只用+或+ =运营商这样做:

$gprice+= $gdata['price_overview']['final']; 
+0

谢谢你会测试它! – 2013-04-27 23:45:13

+0

简单的数学就是解决我的需求和更少的代码。感谢您也向我展示了如何用逗号替换点。 – 2013-04-28 18:10:05