PHP Foreach跳过Array的结果

时间:2016-01-20 12:03:37

标签: php arrays loops foreach

我试图限制我的foreach中显示的结果数量,到目前为止我已经得到了这个结果:

    <?php $facilitiescounter = 0; ?>
    <?php foreach ($facilities as $data) { 
    if (++$facilitiescounter == 7) break; 
    echo '<div class="checkmark-33"><div class="fa-stack fa-1x checkmark-icon"><i class="fa fa-circle fa-stack-2x icon-background"></i><i class="fa fa-check fa-stack-1x icon-text"></i></div><div class="checkmark-inner">'. $data->Name .'</div></div>'; }?> 

    <a class="read-more-show hide" href="#">Show More</a> <span class="read-more-content">Show all other results from array <a class="read-more-hide hide" href="#">Show Less</a></span>

我已设法将其限制为前6个结果,是否有可能再做一个foreach以获得除前六个之外的所有其他结果?

或者有更好的方法吗? 谢谢!

4 个答案:

答案 0 :(得分:3)

在这种情况下,简单的for循环更合适,因为我们可以轻松确定开始和结束

前六项结果:

for($i = 0, $t = min(6, count($facilities)); $i < $t; ++$i)
{
    $facilities[$i]->Name
    ....

其他的:

for($i = 6, $t = count($facilities); $i < $t; ++$i)
{
    $facilities[$i]->Name
    ....

注意:如果$facilities少于6个元素,则添加最低限度验证。感谢@lanis

答案 1 :(得分:3)

您可以使用array_slice()http://php.net/manual/fr/function.array-slice.php

git diff commit1 commit2 folder_path

答案 2 :(得分:0)

是的,你可以做得更好。只需将$ facilities数组放在一个名为$ temp的临时数组中,然后每当你的foreach循环执行时,只需从$ temp数组中删除该元素。之后,您只需将$ facilities数组替换为$ temp。

答案 3 :(得分:0)

<?php $facilitiescounter = 0; ?>
<?php foreach ($facilities as $data) { 
if (++$facilitiescounter <= 7) break; 
echo '<div class="checkmark-33"><div class="fa-stack fa-1x checkmark-icon"><i class="fa fa-circle fa-stack-2x icon-background"></i><i class="fa fa-check fa-stack-1x icon-text"></i></div><div class="checkmark-inner">'. $data->Name .'</div></div>'; }?> 

<a class="read-more-show hide" href="#">Show More</a> <span class="read-more-content">Show all other results from array <a class="read-more-hide hide" href="#">Show Less</a></span>

我只更改了if条件。它会给你正确的结果。试试吧!