在PHP中的while循环中每隔三分之一后插入HTML包装器

时间:2018-01-28 08:00:49

标签: php html

我有一些' html'要在php while循环中显示的内容。但是,我希望每行只有3个内容块,而呈现html应该如下所示:

<div class="row">
  <div>Content Block</div>
  <div>Content Block</div>  
  <div>Content Block</div>
</div>
<div class="row">
  <div>Content Block</div>
  <div>Content Block</div>
  <div>Content Block</div>
</div>
<div class="row">
  <div>Content Block</div>
  <div>Content Block</div>
  <div>Content Block</div>
</div> 

这是我尝试的方式:

$output=[];    
$i=0; 
$html='';
while($row = $stmt->fetch()) {    

  if($i % 3 == 0) {
    $html .= "<div class='row'>\n";
  }

  $html.="<div class='col-sm-4'>
            <div class='room-box'>
              <img src='$thumb' class='img-responsive' >
              <h4>$name</h4>
            </div>
          </div>\n";

  if($i++ % 3 == 2) { 
    $html .= "</div>\n";
    $output[] = $html;
  }
} 

但它不适合我。任何人都可以告诉我,我做错了什么?谢谢

3 个答案:

答案 0 :(得分:1)

试试这个 -

$ cat dat/matrix.csv
0;0;0;0;0;0
0;0;0;1;0;0
0;1;0;1;0;0
0;0;1;1;0;0
0;0;0;0;0;0
0;0;0;0;0;0

$ cat dat/matrix2.csv
0;0;0;0;0;0;1;0
0;0;0;1;0;0;0;1
0;1;0;1;0;0;1;0
0;0;1;1;0;0;0;1
0;0;0;0;0;0;1;1
0;0;0;0;0;0;0;0
1;1;1;0;0;1;1;1
0;0;0;1;1;0;0;0

答案 1 :(得分:1)

我认为您必须在将$html = '';添加到$output=[];

后重置while($row = $stmt->fetch()) { if($i % 3 === 0) { $html .= "<div class='row'>\n"; } $html.="<div class='col-sm-4'> <div class='room-box'> <img src='$thumb' class='img-responsive' > <h4>$name</h4> </div> </div>\n"; if($i++ % 3 === 2) { $html .= "</div>\n"; $output[] = $html; $html = ''; } }
while

Test output

注意: 如果您有11个项目,那么您将错过最后2个项目。

如果你还想添加最后2个,你可以在$html循环之后添加它,这将检查if ($html !== '') { $html .= "</div>\n"; $output[] = $html; } 是不是空字符串:

foo()

Output php

答案 2 :(得分:0)

也许问题主要在于你是如何尝试访问变量的:

$output=[];    
$i=0; 
$html='';
while($row = $stmt->fetch()) {    

  if($i % 3 == 0) {
    $html .= "<div class='row'>\n";
  }

  $html.="<div class='col-sm-4'>
            <div class='room-box'>
              <img src='{$row['thumb']}' class='img-responsive'>
              <h4>{$row['name']}</h4>
            </div>
          </div>\n";

  if ($i % 3 == 2) { 
    $html .= "</div>\n";
    $output[] = $html;
  }
  $i++;
}

记录是否包含名为thumbname的字段?