2012-04-23 31 views
-1

私のような、単純なforeachループがあります。私は、ページごとに15件の記事を持っており、それが何かごとに5番目の項目を行う必要がありますPHPのforeachループごとに5番目の項目

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

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

ともカウンターをしかし最後にはありませんが、どうすればいいですか?

だから、次のようになります。$インデックスは、あなたの配列の最後のインデックスと等しくないように

POST 
POST 
POST 
POST 
POST 
DO SOMETHING 
POST 
POST 
POST 
POST 
POST 
DO SOMETHING 
POST 
POST 
POST 
POST 
POST 
+0

私はあなたが最大インデックスを知っていると仮定し、条件が($ index%5 + 1 == 5)&&($ index mert

+0

"FizzBu​​zz"を参照してください?これは*同じ*ものです(実際にはそれほど複雑ではありません)...あなたはすでにどこかでカバーされている "最後"の条件を知り、それを組み合わせるだけです。 –

答えて

3

あなたが知っている場合、あなたは15件の記事を持っており、すべての5番目ではなく、最後が必要... ? それで、なぜチェックしないのですか?

if($index == 4 || $index == 9) 
+0

正確には、これは '$ index%5 + 1 == 5 && $ index!= 15'よりはるかに読みやすく、特別な場合は特別なものにする必要があります。 – OmnipotentEntity

+0

これは動作しますが、私は4と9を使用しなければなりませんでしたか?私は15の項目を持っています... – Cameron

+0

0ドルであなたの$インデックスを開始しているので、それはです – Jack

4
if($index % 5 + 1 == 5 && $index != 14) { 
//do something 
} 
があなたの条件を変更して

。それが14か15かどうか(0か1で始まるかどうかによって異なります)。

+0

まだ「15番目のアイテムの後に何かしてください! – Cameron

+0

'$ index'は0または1で始まりますか? $ indexが0から始まる場合は '$ index!= 14'に変更してください – Jack

+0

インデックスが...より大きいかどうかをチェックしてください – citruspi

0

範囲演算子を確認してください。このような状況には非常に便利です。あなたは私が右だ、5番目と10番目のいずれかで「何かを作る」する必要があることを意味

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

foreach (range(0, $index, 5) as $number) { 
    // do something with $posts[$number] 
} 
+0

ここではどのように使用しますか? –

+0

例として少しのコードを追加しました。 – FreudianSlip

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]; 
} 
} 

これは、すべての最後の投稿を削除し、唯一の五回ごとのポストをエコーし​​ます。

関連する問題