PHP:你如何确定每个循环的第N次迭代?

我想每3个post后通过XML回显一个图像这里是我的代码:

<?php // URL of the XML feed. $feed = 'test.xml'; // How many items do we want to display? //$display = 3; // Check our XML file exists if(!file_exists($feed)) { die('The XML file could not be found!'); } // First, open the XML file. $xml = simplexml_load_file($feed); // Set the counter for counting how many items we've displayed. $counter = 0; // Start the loop to display each item. foreach($xml->post as $post) { echo ' <div style="float:left; width: 180px; margin-top:20px; margin-bottom:10px;"> image file</a> <div class="design-sample-txt">'. $post->author.'</div></div> '; // Increase the counter by one. $counter++; // Check to display all the items we want to. if($counter >= 3) { echo 'image file'; } //if($counter == $display) { // Yes. End the loop. // break; //} // No. Continue. } ?> 

这里是一个示例前3个是正确的,但现在它不循环idgc.ca/web-design-samples-testing.php

最简单的方法是使用模数除法运算符。

 if ($counter % 3 == 0) { echo 'image file'; } 

这是如何工作的:Modulus除法返回余数。 当你是偶数倍时,余数总是等于0。

有一个问题: 0 % 3等于0.如果您的计数器从0开始,这可能会导致意外的结果。

从@Powerlord的回答中,

“有一个问题:0%3等于0.如果您的计数器从0开始,这可能会导致意外的结果。

你仍然可以在0(数组,查询)开始你的计数器,但抵消它

 if (($counter + 1) % 3 == 0) { echo 'image file'; } 

使用PHP手册中的模算术运算。

例如

 $x = 3; for($i=0; $i<10; $i++) { if($i % $x == 0) { // display image } } 

有关模数计算的更详细的理解,请点击这里 。

每3个职位?

 if($counter % 3 == 0){ echo IMAGE; } 

如何:if(($ counter%$ display)== 0)

我正在使用这个状态更新来每1000次迭代显示一个“+”字符,而且它似乎工作正常。

 if ($ucounter % 1000 == 0) { echo '+'; } 

你也可以做到没有模数。 只要重置您的柜台匹配。

 if($counter == 2) { // matches every 3 iterations echo 'image-file'; $counter = 0; }