PHP循环将每个第3个循环放在行中

时间:2016-11-30 18:51:49

标签: php

我希望通过PHP中的循环连续添加3个div。 例如:

<div class="container">
   <div class="row">
      <div class="col-md-4"> Item 1 </div>
      <div class="col-md-4"> Item 2 </div>
      <div class="col-md-4"> Item 3 </div>
   </div>
   <div class="row">
      <div class="col-md-4"> Item 4 </div>
      <div class="col-md-4"> Item 5 </div>
      <div class="col-md-4"> Item 6 </div>
   </div>
</div>

我在Stackoverflow上做了一些搜索,但是我没有找到一个好的解决方案。谁能帮我?到目前为止,这是我的PHP代码,但正如您所看到的,它只放置了一个项目

for($i = 0; $i < $limit; $i++) {
   if ($i % 3 == 0) {
      $content .= "<div class='row'>";
   }

   $content.= "<div class='col-md-4 col-sm-6'>Item ". $i ."</div></div>";

   if ($i % 3 == 0) {
     $content .= "</div>";
   }
}

2 个答案:

答案 0 :(得分:3)

如果将数字放入多维数组,则可以使用嵌套的foreach循环。

foreach (array_chunk(range(1, $limit), 3) as $row) {
    $content .= "<div class='row'>";
    foreach ($row as $i) {
        $content .= "<div class='col-md-4 col-sm-6'>Item ". $i ."</div>";
    }
    $content .= "</div>";
}

array_chunk(range(1, $limit), 3)将生成类似[[1, 2, 3], [4, 5, 6]]的数组。这将使用稍多的内存,但我更喜欢更简单的代码。

答案 1 :(得分:1)

这样做可以应对$limit

中的奇数
$limit = 9;
$content = '';
for($i = 0; $i < $limit; $i++) {
    if ($i % 3 == 0) {
        $content .= "\n<div class='row'>";
    }
    // remove the extra `</div>` from this line
    //$content.= "<div class='col-md-4 col-sm-6'>Item ". $i ."</div></div>";

    $content.= "\n\t<div class='col-md-4 col-sm-6'>Item$i</div>";

    if ($i % 3 == 2) {
        $content .= "\n</div>";
    }
}
//cope with odd numbers in $limit
if ( $i%3 != 0) {
    $content .= "\n</div>";
}
echo $content;

结果:

<div class='row'>
    <div class='col-md-4 col-sm-6'>Item0</div>
    <div class='col-md-4 col-sm-6'>Item1</div>
    <div class='col-md-4 col-sm-6'>Item2</div>
</div>
<div class='row'>
    <div class='col-md-4 col-sm-6'>Item3</div>
    <div class='col-md-4 col-sm-6'>Item4</div>
    <div class='col-md-4 col-sm-6'>Item5</div>
</div>
<div class='row'>
    <div class='col-md-4 col-sm-6'>Item6</div>
    <div class='col-md-4 col-sm-6'>Item7</div>
    <div class='col-md-4 col-sm-6'>Item8</div>
</div>

或者将$ limit设置为奇数,如5

<div class='row'>
    <div class='col-md-4 col-sm-6'>Item 1</div>
    <div class='col-md-4 col-sm-6'>Item 2</div>
    <div class='col-md-4 col-sm-6'>Item 3</div>
</div>
<div class='row'>
    <div class='col-md-4 col-sm-6'>Item 4</div>
    <div class='col-md-4 col-sm-6'>Item 5</div>
</div>