使用PHP输出所有货币值

时间:2015-03-29 17:19:38

标签: php json api

我正在尝试利用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
                 }
                 }
              ?>

2 个答案:

答案 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>