限制foreach只显示10行数据?

时间:2013-11-14 22:20:53

标签: php arrays foreach

好的,我遇到了一个小问题。

我对PHP / JSON数组有点了解,但更多关于SQL。

我正在使用foreach语句迭代这个数组,但是如何限制它只显示10个结果呢?

$Address = $RPC2->getaddressesbyaccount($_SESSION['email']); 

foreach($Address as $Another) {
    echo '<b>' . $Another . '</b><br /><br />';
}

它工作正常但是当有10多个结果时它会弄乱页面上的CSS。

如何让它只显示10个结果?

7 个答案:

答案 0 :(得分:5)

你可以打破循环

$i = 0;
foreach($Address as $Another) {
    $i++;
    echo '<b>' . $Another . '</b><br /><br />';
    if($i==10) break;
}

但这不是最干净的解决方案。

如果您的$Address数组有数字键,则可以使用for循环:

$nb = sizeof($Address) < 10 ? sizeof($Address) : 10;
for($i = 0; $i < $nb; $i++){
    echo '<b>' . $Address[$i] . '</b><br /><br />';
}
如果$ Address数组的长度小于10,则使用

min()函数。

答案 1 :(得分:4)

如果getaddressesbyaccount返回数组,则可以执行以下操作:

foreach(array_slice($Address, 0, 10) as $Another) {
    echo '<b>' . $Another . '</b><br /><br />';
}

答案 2 :(得分:2)

你可以计算并突破foreach(),但为什么不只是:

for($i=0; $i<10 && $i<=count($Address); $i++) {
    echo '<b>' . $Address[$i] . '</b><br /><br />';
}

假设数字键。

答案 3 :(得分:2)

您可以非常轻松地使用for循环:

$Address = $RPC2->getaddressesbyaccount($_SESSION['email']); 

$loopTo = min(count($Address), 10);
for($i = 0; $i < $loopTo; $i++)
{
    echo '<b>'.$Address[$i].'</b><br /><br />';
}

答案 4 :(得分:1)

array_slice变体是一个很好的通用解决方案,因为它在便利性之间取得了很好的平衡(只有一个表达式可以自然地使用foreach)和通用性(不依赖于数组键是顺序整数。)

但是,如果你想从原始数组中取出更大的切片,那么array_slice将预先分配所有切片,消耗内存。如果您只需要迭代就不需要这样做,那么更好的选择是LimitIterator

foreach (new LimitIterator($Address, 0, 10) as $Another) {
    echo '<b>' . $Another . '</b><br /><br />';
}

答案 5 :(得分:1)

我认为这应该适合您的情况

foreach(array_slice($Address, 0, 10) as $Another) {
    echo '<b>' . $Another . '</b><br /><br />';
}

答案 6 :(得分:0)

foreach添加密钥以获取数组索引。然后在达到10时终止循环。

foreach($Address as $i => $Another) {
    if ($i == 10) {
        break;
    }
    echo '<b>' . $Another . '</b><br /><br />';
}

或者使用array_slice()来获取数组的前10个元素:

foreach(array_slice($Address, 0, 10) as $Another) {
    echo '<b>' . $Another . '</b><br /><br />';
}