PHP while() wrapping items


PHP while() wrapping items

我有这个html代码:

<div class="row elem2">
  <div class="item"></div>
  <div class="item"></div>
</div>
<div class="row elem4">
  <div class="item"></div>
  <div class="item"></div>
  <div class="item"></div>
  <div class="item"></div>
</div>
<div class="row elem3">
  <div class="item"></div>
  <div class="item"></div>
  <div class="item"></div>
</div>

我正在寻找一种在我的 php 中实现它的方法,而 (wordpress)。而 是

while ( have_posts() ) : the_post();
   echo '<div class="item"></div>';
endwhile;

我尝试了很多东西,但没有一个奏效。我需要每 2 个项目划分并将它们包装起来,然后<div class="row elem4">接下来的 4 个项目,然后<div class="row elem3">接下来的 3 个项目<div class="row elem2">

我做了很多搜索,但我什至不确定要搜索什么。

有点粗糙,但这里有一个解决方案

$i = 0; // Number of items made so far in the row
$mode = 0; // Current row type enumerated by $elem
$elem = array(2,4,3); // Enumeration of the desired row sizes
while ( have_posts() ) : the_post();
    // Make a new row when there's no items yet
    if ($i == 0) echo '<div class="row elem'. $elem[$mode] .'">';
    echo '<div class="item"></div>';
    $i++;
    // Once the items in the current row has reached the row's maximum size
    if ($i % $elem[$mode] == 0):
        echo '</div>'; 
        $i = 0; // Reset items made for the row back to 0
        $mode = ($mode + 1) % 3; // Increment mode and wrap if necessary
    endif;
endwhile;
if ($i > 0) echo '</div>'; // Finish the last row if it wasn't finished

这就是模数的构建目的!