PHP while()包装项目

时间:2013-12-18 19:37:03

标签: php arrays wordpress while-loop

我有这个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 elem2">中,然后<div class="row elem4">中的后4个项目以及<div class="row elem3">

中的后3个项目

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

1 个答案:

答案 0 :(得分:1)

有点原油,但这是一个解决方案

$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

这就是构建模数的原因!