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

2022-08-30 09:14:32

我想通过XML在3帖子后回显图像,这是我的代码:

<?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


答案 1

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

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

工作原理:模除法返回余数。当您处于偶数倍时,余数始终等于 0。

有一个 catch:等于 0。如果计数器从 0 开始,则可能会导致意外结果。0 % 3


答案 2

偏离@Powerlord的答案,

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

您仍然可以从 0 开始计数器(数组、查询),但会将其偏移

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

推荐