我有6种产品,我想使用php foreach在每行上显示3种产品

时间:2018-07-12 15:50:54

标签: php html css twitter-bootstrap

我正在使用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列中显示。

3 个答案:

答案 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>");