Bittrex公共API混淆

时间:2017-08-15 13:24:52

标签: php api public

我是一个完整的新手,如果我问一个愚蠢的问题,请道歉。我正在尝试从Bittrex的公共API中提取数据,特别是" https://bittrex.com/api/v1.1/public/getmarkets"。

通过这样做,我成功地从其他API获取数据,打印出前20个硬币:

$coinMarket = "https://api.coinmarketcap.com/v1/ticker/?limit=20";
$marketData = json_decode(file_get_contents($coinMarket), true);

for($i=0;$i<20;$i++){
    $coins = $marketData[$i]["symbol"];
    print_r($coins);
} 

当我使用上面列出的Bittrex API尝试相同的操作时,我只是重复了20次(每次偏移数增加1):

  

注意:未定义的偏移量:D:\ XAMPP \ htdocs \ BittrexBot.php中的0在线   37

我已经查看了两个API调用实际返回的内容,虽然非常相似,但Bittrex数据包含额外的初始信息,这可能是罪魁祸首(这只是检索到的第一个硬币):

Bittrex:

Array ( 
    [success] => 1 [message] => [result] => Array 
        ( 
            [0] => Array ( [MarketName] => BITCNY-BTC [High] => 30998.99999966 [Low] => 27727.54234112 [Volume] => 4.32110365 [Last] => 28007.61852638 [BaseVolume] => 127223.448106 [TimeStamp] => 2017-08-15T12:03:57.393 [Bid] => 27450.26691772 [Ask] => 28290.52376401 [OpenBuyOrders] => 186 [OpenSellOrders] => 47 [PrevDay] => 28853.26999991 [Created] => 2015-12-11T06:31:40.653
        )

CoinMarketCap:

Array 
        ( 
            [0] => Array ( [id] => bitcoin [name] => Bitcoin [symbol] => BTC [rank] => 1 [price_usd] => 4129.24 [price_btc] => 1.0 [24h_volume_usd] => 2984050000.0 [market_cap_usd] => 68165233778.0 [available_supply] => 16507937.0 [total_supply] => 16507937.0 [percent_change_1h] => 0.32 [percent_change_24h] => -1.73 [percent_change_7d] => 20.58 [last_updated] => 1502800149 
        )

在我的问题Bittrex返回数据的开头是否有额外的数组([success] =&gt; 1 [message] =&gt; [结果] =&gt; ?或者它是什么?与返回的数据无关,而不是我如何处理它?<​​/ p>

作为参考,我在访问Bittrex API时尝试使用的代码如下:

$coinMarket = "https://bittrex.com/api/v1.1/public/getmarketsummaries";
$marketData = json_decode(file_get_contents($coinMarket), true);

for($i=0;$i<20;$i++){
    $coins = $marketData[$i]["MarketName"];
    print_r($coins);
}

非常感谢任何协助或正确方向的观点!

感谢。

2 个答案:

答案 0 :(得分:1)

并不是说返回的数据,数组的开头有什么东西 不要那样工作;但实际上它们是非常不同的,必须是 以不同的方式访问。

CoinMarketCap 中,数据是在您的第一维中给出的 阵列。在 Bittrex 中,数据是在result数组中给出的,所以你 必须相应地访问它:

$coins = $marketData['result'][$i]['MarketName'];

为了帮助调试这些情况,当您在HTML中print_r()数组时 最好先回复<pre>标记:

echo '<pre>';

# or

<pre>
<?php # php code

这将保留空格并使格式更具可读性。 那个或var_dump()将帮助您更好地可视化阵列。例 与您的数据:

Array
(
    [success] => 1
    [message] => 
    [result] => Array
        (
            [0] => Array
                (
                    [MarketName] => BITCNY-BTC
                    [High] => 30998.99999966
                    [Low] => 27450.26691772
                    [Volume] => 4.11387066
                    [Last] => 28290.52376401
                    [BaseVolume] => 121183.63341716
                    [TimeStamp] => 2017-08-15T13:28:16.543
                    [Bid] => 27450.267
                    [Ask] => 28290.52376325
                    [OpenBuyOrders] => 186
                    [OpenSellOrders] => 47
                    [PrevDay] => 29041.02993787
                    [Created] => 2015-12-11T06:31:40.653
                )

            [1] => Array
                (
                    [MarketName] => BTC-1ST
                    [High] => 0.00019299
                    [Low] => 0.00015028
                    [Volume] => 680348.58729147
               ....................................
                )
        )
)

答案 1 :(得分:0)

要访问响应中的数据,您可能会看到以下内容:

$url='https://bittrex.com/api/v1.1/public/getmarkets';
$data=file_get_contents( $url );
$json=json_decode( $data );

$result=$json->result;
foreach( $result as $i => $obj ){
    echo $obj->MarketName,'<br />';
}