【问题标题】:How can I group a foreach loop's output?如何对 foreach 循环的输出进行分组?
【发布时间】:2023-03-28 00:54:01
【问题描述】:

我正在使用 Bootstrap 的网格,并且正在遍历一组名称。问题是我不知道如何为每个父 div 放置 X 个结果。

$names = mysql 结果包含 9 个名称。

<div class="container">
  <div class="row">
    <?php
    foreach ($names as $name){
     echo '
      <div class="col-xs-3 col-sm-3">
        <p>Customer name:'.$name.'</p>
      </div>';  
     }  
   </div>
</div>

这将输出 9 次。

<div class="col-xs-3 col-sm-3">
  <p> Customer name: Foo </p>
</div>
<div class="col-xs-3 col-sm-3">
  <p> Customer name: bob </p>
</div> 
<div class="col-xs-3 col-sm-3">
  <p> Customer name: jim </p>
</div> 
<div class="col-xs-3 col-sm-3">
  <p> Customer name: dave </p>
</div> 
<div class="col-xs-3 col-sm-3">
  <p> Customer name: lucy </p>
</div> 
<div class="col-xs-3 col-sm-3">
  <p> Customer name: sarah </p>
</div> 
<div class="col-xs-3 col-sm-3">
  <p> Customer name: geoff </p>
</div> 
<div class="col-xs-3 col-sm-3">
  <p> Customer name: matt </p>
</div> 
<div class="col-xs-3 col-sm-3">
  <p> Customer name: alex </p>
</div>  

如何使它像这样每个.row 输出 3 列 div?

<div class="row">
    <div class="col-xs-3 col-sm-3">
      <p> Customer name: Foo </p>
    </div>
    <div class="col-xs-3 col-sm-3">
      <p> Customer name: bob </p>
    </div> 
    <div class="col-xs-3 col-sm-3">
      <p> Customer name: jim </p>
    </div>
</div>

<div class="row">
    <div class="col-xs-3 col-sm-3">
      <p> Customer name: dave </p>
    </div> 
    <div class="col-xs-3 col-sm-3">
      <p> Customer name: lucy </p>
    </div> 
    <div class="col-xs-3 col-sm-3">
      <p> Customer name: sarah </p>
    </div> 
</div>

<div class="row">
    <div class="col-xs-3 col-sm-3">
      <p> Customer name: geoff </p>
    </div> 
    <div class="col-xs-3 col-sm-3">
      <p> Customer name: matt </p>
    </div> 
    <div class="col-xs-3 col-sm-3">
      <p> Customer name: alex </p>
    </div>  
</div>

【问题讨论】:

  • 我在随后的问题中看到您正在使用我的答案作为该问题的示例,如果您认为您的问题得到了回答,请随意标记。
  • 抱歉,我忘了这样做。

标签: php html twitter-bootstrap foreach


【解决方案1】:

在循环中使用基于变量值的条件的显式变量。例如:

$i = 0;

foreach ($names as $name)
{
    if($i == 0)
    {
        echo '<div class="row">';
    }

    echo
    '<div class="col-xs-3 col-sm-3">
        <p>Customer name:'.$name.'</p>
    </div>';
    $i++;

    if($i == 2)
    {
        echo '</div>';
        $i = 0;
    }
}

【讨论】:

    【解决方案2】:

    您可能想考虑一个array_chunk() 来处理奇数个名字:

    $names  =   array('Dave','Frank','Sarah','Dan','Andrew','Jessica','Alena','Debbie','Jeff');
    $split  =   array_chunk($names,3);
    ?>
    <div class="container">
    <?php
        foreach ($split as $group){
            echo '
        <div class="row">';
            foreach ($group as $name){
                echo '
            <div class="col-xs-3 col-sm-3">
                <p>Customer name:'.$name.'</p>
            </div>';
            }
            echo '
        </div>';
        } 
    ?>
    </div>
    

    【讨论】:

    • 我之前使用过模数和自动增量解决方案,两者都很好,但我个人使用array_chunk(),因为我觉得它直截了当。感谢您的信任投票!干杯。
    • 我喜欢,不错的解决方案
    【解决方案3】:

    您可以尝试删除 &lt;div class="row"&gt; 并让它们堆叠。如果您确保设置所有选项,例如&lt;div class="col-xs-3 col-sm-3 col-md-3 col-lg-3"&gt;,那么它们应该相应地堆叠。除非有单独的需要将它们分成精确的行。这也是头脑中的一个快速想法..没有经过测试,也许不是需要的。

    还有,还有这点

    if (($counter + 1) % 3 == 0) {
      //do code here
    }
    

    if ($counter % 3 == 0) {
          //do code 
        }
    $counter++;
    

    【讨论】:

      猜你喜欢
      • 2015-03-28
      • 1970-01-01
      • 2018-09-17
      • 1970-01-01
      • 2015-06-05
      • 2010-12-13
      • 1970-01-01
      • 1970-01-01
      • 2019-07-12
      相关资源
      最近更新 更多