【问题标题】:Limit display to 10 in foreach statement PHP在 foreach 语句 PHP 中将显示限制为 10
【发布时间】:2018-05-02 10:27:24
【问题描述】:

我有一个 API 可以显示近 100 笔交易,我想限制为 10 笔。我已经尝试过

if($bitcointrades == 10) break

但这没有用。提取数据后是否运行 for 循环?我是否应该将函数分成两部分而不是使用 elseif 来呈现 $trades?这是我正在使用的:

<?php

require_once('bitcoin.class.php');

$data = new Bitcoin();


$type = $_GET['type'];

$currency = $_GET['currency'];

if($type == 'ticker') {

$bitcoinlive = $data->getPrice($currency);

echo '<h2>1 Bitcoin is currently worth <span class="bitvalue">' . 
number_format((float)$bitcoinlive['last'], 2) . ' <span class="upper">' 
. $currency . '</span></span></h2>';
echo ' <p><span><i class="icon-arrow-up-circle"></i> High: ' . 
number_format((float)$bitcoinlive['high'], 2) . '</span> <span><i 
class="icon-arrow-down-circle"></i> Low: ' . 
number_format((float)$bitcoinlive['low'], 2) . '</span>';

} elseif($type == 'trades') {

$bitcointrades = $data->getTrades($currency);

foreach($bitcointrades as $trade) {
if($trade['type'] == 'buy') {
$ttype = '<span class="green"><i class="icon-plus-circle"></i> Buy 
Order</span>';
} else {
$ttype = '<span class="blue"><i class="icon-circle-minus"></i> Sell 
Order</span>';
}
echo' <tr> <th scope="row">' . $ttype . '</th> <td>' . $trade['price'] 
. ' <span class="upper">' . $currency . '</span></td> <td>' . 
$trade['amount'] . '</td> <td>' . $data->timeAgo($trade['date']) . 
'</td> </tr>';

}

}

【问题讨论】:

  • 如果你不能限制来自API的结果,你可以使用foreach(array_slice($bitcointrades, 0, 10) ...
  • 你的API链接是什么,也许它有自己的命令来限制结果。你在使用 api.hitbtc.com 吗? – 在这种情况下查看此文档,您可以直接要求限制结果命令/10 api.hitbtc.com/?shell#trades,使用 API 命令比得到 100 结果然后缩短它更好..会节省一些运行时间
  • 我正在使用 cex.io。 hitbtc 一样可靠吗?
  • 您需要的命令是limit,将它与您的API Query 一起发送,这是一个更好的方法。
  • @TomBeckerle,不确定 hitbtc 的可靠性。

标签: php function for-loop foreach


【解决方案1】:

正常if($bitcointrades == 10) break 不起作用。

$bitcointrades 应该是一个包含您定义为$trade 的交易的数组。

您需要使用迭代器i,如下例所示:

<?php
$i = 0;

foreach($bitcointrades as $trade) {
    if($i==10)
        break;
    // your logic here
    $i++;
}

【讨论】:

  • 这是一个“elseif”语句有区别吗?我尝试了第一个没有运气。让我试试这个。
  • 我得到了一堆解析错误,但我可能输入错误。限制 API 查询更有意义,所以我将走这条路。谢谢大家,我很感激。
【解决方案2】:

你可以使用 break 完成一个 foreach 执行,这样你就可以使用 cnt 和 break

  $my_cnt = 0;
  foreach($bitcointrades as $trade) {
    if ($my_cnt >= 10) {
       break;
    }
    if($trade['type'] == 'buy') {
      $ttype = '<span class="green"><i class="icon-plus-circle"></i> Buy 
      Order</span>';
    } else {
      $ttype = '<span class="blue"><i class="icon-circle-minus"></i> Sell 
      Order</span>';
    }
    $my_cnt++;
}

【讨论】:

    【解决方案3】:

    这样做

    $i = 0;
    foreach ($bitcointrades as $trade) {
    if ($trade['type'] == 'buy') {
        $ttype = '<span class="green"><i class="icon-plus-circle"></i> Buy Order</span>';
    } else {
        $ttype = '<span class="blue"><i class="icon-circle-minus"></i> Sell Order</span>';
    }
    echo ' <tr> <th scope="row">' . $ttype . '</th> <td>' . $trade['price']
        . ' <span class="upper">' . $currency . '</span></td> <td>' .
        $trade['amount'] . '</td> <td>' . $data->timeAgo($trade['date']) .
        '</td> </tr>';
    $i++;
    if ($i == 10) {
        break;
    }
    }
    

    【讨论】:

      猜你喜欢
      • 2010-12-12
      • 2020-03-22
      • 2010-11-19
      • 1970-01-01
      • 1970-01-01
      • 2017-09-27
      • 2022-08-12
      • 1970-01-01
      • 2022-01-06
      相关资源
      最近更新 更多