duangouhui0446 2017-01-12 05:58
浏览 41
已采纳

如何在一行中显示每个3项并继续循环结束?

I have a list item Album contains 30 albums.

I tried to display all them in the browser with 1 rows contain 3 items.

With code like:

<div class="container">
    <div class="row">
        foreach($listAlbum as $item) {
            <div class="col-md-4">$item['imgUrl']</div>
        }
    </div>
    <div class="row">
        <div class="col-md-4"></div>
        <div class="col-md-4"></div>
        <div class="col-md-4"></div>
    </div>
    <div class="row">
        <div class="col-md-4"></div>
        <div class="col-md-4"></div>
        <div class="col-md-4"></div>
    </div>
</div>

Note: I want for each continues to loop all .col-md-4.

If I again using foreach(listAlbum) through each .row. It will duplicate, I don't want this.

Have any idea to resolve my problem?

Edit: Full structure in .col-md-4:

<div class="news-post standard-post">
  <div class="post-gallery">
    <a href="Album_Detail.html"><img src="upload/news-posts/st1.jpg" alt=""> </a>
  </div>
  <div class="post-content">
    <h2><a href="Album_Detail.html">Lorem ipsum dolor sit amet, consectetur adipisicing elit.</a></h2>
    <ul class="post-tags">
      <li><i class="fa fa-clock-o"></i>27-Nov-2016</li>
      <li><a href="#"><i class="fa fa-comments-o"></i><span>23</span></a></li>
    </ul>
  </div>
</div>
  • 写回答

3条回答 默认 最新

  • duane9322 2017-01-12 06:21
    关注

    You need a counter for the $listAlbum items. Increment the counter for each item and check if it is divisible by 3. If it is divisible by 3, re-open the row tag:

    <?php
    $listAlbum = [
      ['imgUrl' => 'url1'],
      ['imgUrl' => 'url2'],
      ['imgUrl' => 'url3'],
      ['imgUrl' => 'url4'],
      ['imgUrl' => 'url5'],
    ];
    
    echo "<div class='container'>
    \t<div class='row'>
    ";
    
    $i = -1;
    foreach ($listAlbum as $item) {
      if (++$i && $i % 3 == 0)
        echo "\t</div>
    \t<div class='row'>
    ";
      echo "\t\t<div class='col-md-4'>", $item['imgUrl'], "</div>
    ";
    }
    
    if (++$i % 3)
      echo str_repeat("\t\t<div class='col-md-4'></div>
    ", 3 - $i % 3);
    
    echo "\t</div>
    </div>";
    

    Sample Output

    <div class='container'>
        <div class='row'>
            <div class='col-md-4'>url1</div>
            <div class='col-md-4'>url2</div>
            <div class='col-md-4'>url3</div>
        </div>
        <div class='row'>
            <div class='col-md-4'>url4</div>
            <div class='col-md-4'>url5</div>
            <div class='col-md-4'></div>
        </div>
    </div>
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?
  • ¥15 加热介质是液体,换热器壳侧导热系数和总的导热系数怎么算
  • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
  • ¥15 cmd cl 0x000007b
  • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line