【问题标题】:Foreach loop: split elements in groups of five and sixForeach 循环:将元素分成 5 个和 6 个组
【发布时间】:2015-07-23 21:50:12
【问题描述】:

我正在使用 foreach 循环来输出从 Instagram API 获取的图像。 我想将输出的图像分成 四 和 五 组,除此之外,除了最后一个应该添加 2 个 div 的组之外,还向每个组添加一个 div 元素,所以我得到以下结构:

<div class="group>
    <div class="extra"> </div>
    <img/>
    <img/>
    <img/>
    <img/>
</div> <!-- Close group of 5 -->
<div class="group>
    <div class="extra"> </div>
    <img/>
    <img/>
    <img/>
    <img/>
    <img/>
</div> <!-- Close group of 6 -->
<div class="group>
    <div class="extra"> </div>
    <img/>
    <img/>
    <img/>
    <div class="extra"> </div>
</div> <!-- Close group of 5 -->

通过在循环中使用模数,我设法将元素与每个组中正确数量的项目进行分组,但是当我尝试将额外的 div 添加到每个组时,它会破坏计数而且我不再将正确数量的元素组合在一起。我目前用于打印图像的代码(总共 12 个):

  <div class="group"> <!-- Open group-wrapper -->

  $count = 0;

  foreach($decoded_results['data'] as $item) {

      if ($count  % 11 == 0 || $count % 11 == 5 ) {
          echo '<div class="extra"> </div>'; 
          echo '</div> <div class="group">';
      }

      echo '<a target="_blank" href=' .$link_url. '>';
      echo '<div class="img-wrapper">';
      echo '<img src="'.$image_link.'" /> </div> </a>';

      $count++;   
  }

有什么建议可以实现吗?

【问题讨论】:

    标签: php html


    【解决方案1】:

    这足以为您指明正确的方向:

    <div class='group'>
        <div class='extra'></div>
        <?php
        $i = 1;
        $j = 1;
        $step = 4;
        $count = count($decoded_results['data']);
        foreach($decoded_results['data'] as $k => $v) {
            ?>
            <a target='_blank' href='<?php echo $v;?>'>
                <div class='img-wrapper'>
                    <img src='<?php echo $v;?>' />
                </div>
            </a>
            <?php
            if (($j % $step) == 0 && $i < $count) {
                ?>
            </div>
            <div class='group'>
                <div class="extra"></div>
                <?php
                $step = ($step == 4) ? 5: 4;
                $j = 0;
            }
            $j++;   
            $i++;
        }
        ?>
        <div class='extra'></div>
    </div>
    

    顺便说一句,您应该知道在a(内联元素)中包含div(块元素)并不完全是语义HTML,但现在仍然被广泛接受。我个人倾向于避免这种情况,并且可以通过使用 CSS 来实现。

    【讨论】:

      【解决方案2】:

      如果您使用 PHP,请使用 array_chunk() 函数 http://php.net/manual/en/function.array-chunk.php

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-07-29
        • 1970-01-01
        • 2014-05-22
        • 1970-01-01
        • 1970-01-01
        • 2016-05-17
        相关资源
        最近更新 更多