我有一些' 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;
}
}
但它不适合我。任何人都可以告诉我,我做错了什么?谢谢
答案 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
注意:强> 如果您有11个项目,那么您将错过最后2个项目。
如果你还想添加最后2个,你可以在$html
循环之后添加它,这将检查if ($html !== '') {
$html .= "</div>\n";
$output[] = $html;
}
是不是空字符串:
foo()
答案 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++;
}
记录是否包含名为thumb
和name
的字段?