Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Bittrex公共API混淆_Php_Api_Public - Fatal编程技术网

Php Bittrex公共API混淆

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++){

我是一个完全的新手,所以如果我问了一个愚蠢的问题,我道歉。我试图从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++){
    $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 />';
}