【问题标题】:PHP - Adding divs to a foreach loop every 4 times [duplicate]PHP - 每4次将div添加到foreach循环[重复]
【发布时间】:2012-02-03 22:38:36
【问题描述】:

我需要一些关于 foreach 循环的帮助。

基本上我需要做的是每 4 个循环围绕数据输出包装一个 div。

我有以下循环:

foreach( $users_kicks as $kicks ) {
    echo $kicks->brand;
}

每 4 次它会回显出我想将它包装在一个所以最后它看起来像这样:

<div>
    kicks brand
    kicks brand
    kicks brand
    kicks brand
</div>
<div>
    kicks brand
    kicks brand
    kicks brand
    kicks brand
</div>
<div>
    kicks brand
    kicks brand
    kicks brand
    kicks brand
</div>

等等。

干杯

【问题讨论】:

    标签: php


    【解决方案1】:

    这个答案很晚 - 但如果人们看到它 - 这是一个更清洁的解决方案,没有凌乱的计数器和 if 声明:

    foreach (array_chunk($users_kicks, 4, true) as $array) {
        echo '<div>';
        foreach($array as $kicks) {
             echo $kicks->brand;
        }
        echo '</div>';
    }
    

    你可以阅读array_chunk on php.net

    【讨论】:

      【解决方案2】:
      <?php
      $item_count=1;
      $items_block=3;
      ?>
      <div class="wrapper">
          <?php if(!empty($list)){ ?>
      
              <div class="item_block">
                  <?php foreach ($list as $val){ ?>
                      <div>Item</div>
      
                      <?php 
                      if($item_count % $items_block==0){ ?>
                          </div>
                          <div class="item_block">
                      <?php 
                      } 
                      $item_count++;
                      ?>
      
                  <?php endforeach; ?>
              </div>
          <?php } ?>
      </div>
      

      【讨论】:

        【解决方案3】:

        你也可以使用 array_chunk 来分割数组

        $blocks = array_chunk($users_kicks, 4);
        foreach ($blocks as $block) {
            echo '<div>';
            foreach ($block as $kicks) {
                echo $kicks->brand;
            }
            echo '</div>';
        }
        

        【讨论】:

          【解决方案4】:

          对 AVD 的答案稍作修改,以确保如果数组为空或它的计数为 4 倍时不存在空 DIV...

          if($lastRec=count($user_kicks)){
            echo '<div>';
            $i=1;
            foreach( $users_kicks as $kicks ) {
              if( ($i % 4 == 0) && ($i<$lastRec) ) echo '</div><div>';
              echo $kicks->brand;
              $i++;
            }
            echo '</div>';
          }
          

          【讨论】:

            【解决方案5】:
            $count = 1;
            foreach( $users_kicks as $kicks ) 
            {
                if ($count%4 == 1)
                {  
                     echo "<div>";
                }
                echo $kicks->brand;
                if ($count%4 == 0)
                {
                    echo "</div>";
                }
                $count++;
            }
            if ($count%4 != 1) echo "</div>"; //This is to ensure there is no open div if the number of elements in user_kicks is not a multiple of 4
            

            【讨论】:

              【解决方案6】:

              尝试 % 模运算符。

              $i=1;
              //div begins
              foreach( $users_kicks as $kicks ) {
                 if($i % 4 ==0)
                  {
                    //div ends
                    //div begins
                  }
                  echo $kicks->brand;
                 $i++;
              }
              //div ends
              

              【讨论】: