我正在尝试利用Bitcoin Charts API将所有货币的比特币值显示为列表项。
目前我在每个列表项中重复此PHP代码段:
<li class="myClass">
<?php
foreach(json_decode(file_get_contents("http://api.bitcoincharts.com/v1/markets.json")) as $item)
if($item->symbol == 'localbtcPLN') break;
printf("\t%s\nPLN", $item->avg);
?>
</li>
如何简化此操作以便代码只调用一次JSON文件?
感谢您的帮助。
根据Vishal的帮助,我尝试了这个:
<?php $all_data = json_decode(file_get_contents("http://api.bitcoincharts.com/v1/markets.json"),true);
foreach ($all_data as $data)
{
?><li class="pure-menu-item pure-menu-disabled">
<?php
echo $data['ask'];//use the keyname to get the value
echo ' ';
echo $data['currency'];
?>
</li>
<?php
}
?>
但是,它输出的数据太多,包括空值。
利用我从Florian和Vishal那里学到的东西,我尝试了以下片段,它完整地输出了一些重复货币的警告。
<?php $all_data = json_decode(file_get_contents("http://api.bitcoincharts.com/v1/markets.json"),true);
foreach ($all_data as $data)
{
if(trim($data['avg']) != "")//check if value not empty
{
?><li class="pure-menu-item pure-menu-disabled">
<?php
echo $data['avg']; //use the keyname to get the value
echo ' ';
echo $data['currency'];
?>
</li>
<?php
}
}
?>
答案 0 :(得分:1)
你可以运行一个foreach循环
<ol>
<?php $all_data = json_decode(file_get_contents("http://api.bitcoincharts.com/v1/markets.json"),true);
foreach ($all_data as $data)
{
if(trim($data['currency']) != "")//check if value not empty
{
?><li>
<?php echo $data['bid'];//use the keyname to get the value ?>
</li>
<?php
}
}
?>
</ol>
答案 1 :(得分:1)
我认为您希望按特定顺序显示值。
首先,将json_decode()的结果存储在像@Vishal Wadhawan这样的数组中。
$all_data = json_decode(file_get_contents("http://api.bitcoincharts.com/v1/markets.json"),true);
接下来,创建一个新数组,您只存储符号和avg:
$myvalues = array();
foreach ($all_data as $data)
{
$myvalues[$data['symbol']] = $data['avg'];
}
之后,您可以使用$ myvalues显示平均值:
<li class="myClass">
<?php echo $myvalues['localbtcPLN'] . ' PLN'; ?>
</li>
您还可以存储&#39;货币&#39;值:
$myvalues[$data['symbol']] = array(
'avg' => $data['avg'],
'currency' => $data['currency'],
);
并通过以下方式访问它:
<li class="myClass">
<?php echo $myvalues['localbtcPLN']['avg'] . ' ' . $myvalues['localbtcPLN']['currency']; ?>
</li>