【问题标题】:i have 6 products and i want to show 3 products on per row using php foreach我有 6 个产品,我想使用 php foreach 在每行显示 3 个产品
【发布时间】:2019-11-16 16:54:23
【问题描述】:

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

【问题讨论】:

  • 这个问题主要是关于 html/css/bootstrap,而不是 php,所以我已经相应地编辑了这个问题。我还改进了格式,使代码更具可读性,请在您的下一个问题中这样做(我相信这里还有 2 个换行符)。
  • 好的,我会试试这个
  • 但问题依旧
  • 您根本不需要计数器。一个简单的循环,将每个条目放入归类为col-4col-md-4 或其他类型的BS 列(如果您希望每“行”三个,则4 是关键)。其余的应该照顾好自己。如果列都在一个div.row 内,则列将堆叠 3 宽

标签: php html css twitter-bootstrap


【解决方案1】:
//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>");

【讨论】:

    【解决方案2】:

    一个简单的方法是使用一个计数器变量。循环之前将计数器变量的值设置为0,并在每次打印产品后递增。

    此外,将 foreach 循环的主体保持在 if 条件下,它将检查 counter 变量的值。如果该值等于 3,则将其重置为 0,然后在添加新的&lt;/div&gt;&lt;div class="row"&gt; 标签后打印产品。

    代码如下:

    <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>
    

    希望这个逻辑对你有用。

    【讨论】:

    • //初始化一个计数器 $count = 0; //启动表 echo(""); foreach ($products as $product) { //如果它可以被 5 整除,那么我们回显一个新行 if(($count % 5) == 0){ echo("\n"); $计数++; }//if else{ $count++; } echo("
      $product "); }//foreach //关闭表 echo("
      ");
    • 无论如何,非常感谢所有给予我支持的人
    【解决方案3】:

    您可以在您的 products 数组上使用 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>..
    }
    

    【讨论】:

    • 现在它在单列中也只显示 2 张图片
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-21
    • 2018-07-26
    相关资源
    最近更新 更多