我正在使用php开发一个电子商务网站。我想使用php foreach
每行显示3种产品(我有6种产品)。这是我的代码:
<div class="section">
<div class="container">
<?php
$numOfCols = 4;
$rowCount = 0;
$bootstrapColWidth = 12 / $numOfCols;
?>
<div class="row">
<?php foreach ($results as $product) { ?>
<div class="col-md-<?php echo $bootstrapColWidth;?>">
<div class="well" style="width: 250px;height: auto;">
<div><?php echo'<img src="' . base_url().'uploads/' . $product-
>product_image . '">'; ?></div>
<?php echo $product->name;?>
</div>
</div>
<?php
$rowCount++;
if($rowCount % $numOfCols == 0) {echo '</div><div
class="row">'.'<br>'.'<br>';
}
?>
<?php };?>
</div>
</div>
此代码使它在同一列中显示所有产品。我不知道如何使它在2列中显示。
答案 0 :(得分:0)
您可以在产品数组上使用array_chunk()
函数,该函数将一个数组拆分为多个新数组。循环播放新阵列并根据需要显示产品。
有关array_chunk()
的更多信息,请访问http://php.net/manual/en/function.array-chunk.php。
提示:
$productsArray = array_chunk($results,3);//chunks 3 products on each sub array
foreach($productsArray as $products)
{
//loop here your products with <div class="row"></div>..
}
答案 1 :(得分:0)
一种简单的方法是使用计数器变量。在循环之前,将计数器变量的值设置为0,并在每次打印产品后将其递增。
另外,将foreach循环的主体保持在if条件下,它将检查计数器变量的值。如果该值等于3,则将其重置为0,然后在添加新的</div><div class="row">
标签之后打印产品。
代码如下:
<div class="section">
<div class="container">
<div class="row">
<?php
$bootstrapColWidth = 12 / $numOfCols;
//Setting the counter variable
$counter = 0;
foreach ($results as $product) {
//Checking the value of counter variable and then implementing the corresponding code
if($counter == 3){
$counter=0;
?>
</div>
<div class="row">
<?php
}else{
$counter++;
}
?>
<div class="col-md-<?php echo $bootstrapColWidth;?>">
<div class="well" style="width: 250px;height: auto;">
<div><?php echo'<img src="' . base_url().'uploads/' . $product->product_image . '">'; ?></div>
<?php echo $product->name;?>
</div>
</div>
<?php };?>
</div>
</div>
</div>
希望这种逻辑对您有用。
答案 2 :(得分:0)
//initialize a counter
$count = 0;
//start the table
echo("<table><tr>");
foreach ($products as $product) {
//if it's divisible by 5 then we echo a new row
if(($count % 5) == 0){
echo("</tr><tr>\n");
$count++;
}//if
else{
$count++;
}
echo("<td>$product<td>");
}//foreach
//close the table
echo("</tr></table>");