-1

我有一个简单的 foreach 循环,例如:

foreach ( $posts as $index => $posts )

还有一个计数器:

if( $index % 5 + 1 == 5 ) {
//do something 
}

我每页有 15 个帖子,它应该每第五个项目做一次,但不是在最后一个,但我该怎么做?

所以它变成:

POST
POST
POST
POST
POST
DO SOMETHING
POST
POST
POST
POST
POST
DO SOMETHING
POST
POST
POST
POST
POST
4

4 回答 4

4
if( $index % 5 + 1 == 5 && $index != 14) {
//do something 
}

更改条件,使 $index 不等于数组中的最后一个索引。是 14 还是 15(取决于您是从 0 开始还是从 1 开始)。

于 2012-04-23T22:54:48.947 回答
3

如果您知道,您有 15 个帖子,并且需要每 5 个但不是最后一个……这意味着您需要用第 5 个和第 10 个“做点什么”,对吗?那么为什么不检查呢?

if($index == 4 || $index == 9)
于 2012-04-23T22:57:03.687 回答
1

检查范围运算符..对于这种情况非常有用。

http://php.net/manual/en/function.range.php

foreach (range(0, $index, 5) as $number) {
    // do something with $posts[$number]
}
于 2012-04-23T22:56:39.677 回答
0

如果您不需要关联数组:

$posts=array(a,b,a,b,a,b,a,b,a,b,a,b,a,b,a);

for($i=0;$i<count($posts);$i++)
{
if($i % 5 + 1 == 5 && $i != count($posts) - 1)
{
echo $i." as ".$posts[$i];
}
}

这将删除所有最后一个帖子,并且每五个帖子只回显一次。

于 2012-04-23T23:11:21.603 回答