我试图限制我的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以获得除前六个之外的所有其他结果?
或者有更好的方法吗? 谢谢!
答案 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条件。它会给你正确的结果。试试吧!