我是一个完整的新手,如果我问一个愚蠢的问题,请道歉。我正在尝试从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);
}
非常感谢任何协助或正确方向的观点!
感谢。
答案 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 />';
}