Php Bittrex公共API混淆
我是一个完全的新手,所以如果我问了一个愚蠢的问题,我道歉。我试图从Bittrex的公共API中提取数据,特别是“” 通过这样做,我成功地从其他API获取了数据,打印出了前20个硬币:Php Bittrex公共API混淆,php,api,public,Php,Api,Public,我是一个完全的新手,所以如果我问了一个愚蠢的问题,我道歉。我试图从Bittrex的公共API中提取数据,特别是“” 通过这样做,我成功地从其他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++){
$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);
}
货币市场上限:
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]=>1[message]=>[result]=>是我的问题吗?还是与返回数据无关,而是与我如何处理它无关
作为参考,我在访问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);
}
$coinMarket=”https://bittrex.com/api/v1.1/public/getmarketsummaries";
$marketData=json_decode(file_get_contents($coinMarket),true);
对于($i=0;$i而言,返回数据的开头不是有什么,而是数组的
不要那样工作;但事实上,他们是非常不同的,必须这样做
以不同的方式访问
在CoinMarketCap中,数据是在您的
在Bittrex中,数据是在结果
数组中给出的,因此
必须相应地访问它:
$coins = $marketData['result'][$i]['MarketName'];
为了帮助调试这些情况,当您在HTML中打印一个数组时
回显以访问响应中的数据很好您可能会看到如下内容:
echo '<pre>';
# or
<pre>
<?php # php code
$url='1!'https://bittrex.com/api/v1.1/public/getmarkets';
$data=文件内容($url);
$json=json_decode($data);
$result=$json->result;
foreach($i=>$obj的结果){
echo$obj->MarketName,
;
}
bittrex返回的数据不同,因此您需要使用不同的密钥才能正确访问。CoinmarketCaps返回有关硬币的信息,而bittrex GetMarketSummary返回有关交易对的信息。这些数据之间的差异可能很大,这取决于您对数据的处理方式。这非常有意义。但是,它仍然l似乎不起作用,问题与以前完全相同。另一个回答建议使用一种有效的方法(我想我理解为什么),但我很想理解为什么你建议的方法不起作用。它只是不喜欢$coins=$marketData[$I]['result']['MarketName']@Mattaus我很抱歉,但是我犯了一个错误,错误地编写了数组访问。我颠倒了迭代变量和结果
数组的位置,它们应该先出现。请检查更新后的答案。关于您对另一个答案的评论,这种想法是正确的。谢谢。我不确定为什么另一个建议方法不起作用,但这似乎确实起作用。你能确认我对代码的理解是正确的吗?$json是整个提取的数据。$result是从$json数据中提取的“结果”子数组(基本上剥离外部数组)。在循环中,我们以增量方式获取此“子数组”中的最低级别数组并将其分配给$obj。最后,我们将重复此数据的“MarketName”部分。在我的情况下,我将只将MarketName分配给一个变量以供以后使用。简言之,是的。
echo '<pre>';
# or
<pre>
<?php # php code
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
....................................
)
)
)
$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 />';
}