2016-08-07 102 views
2

我正在使用Bootstrap的網格,我正在遍歷一組名稱。問題是我不知道如何放置每個父div的X數量的結果。如何分組foreach循環的輸出?

$ names =包含9個名字的mysql結果。

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

我怎樣才能使它輸出3列divs每.row像這樣?

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

我在你使用我的回答,作爲一個例子隨後的問題看,如果你覺得你的問題的回答,隨意標記爲這樣。 – Rasclatt

+0

我的歉意,我忘了這麼做。 – ProEvilz

回答

3

你可能要考慮的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> 
+0

我喜歡這個解決方案。乾淨,它可能表現更好... –

+0

我以前都使用過模數和自增量解決方案,都很好,但我個人使用'array_chunk()',因爲我發現它很簡單。感謝*信心投票*這麼說!乾杯。 – Rasclatt

+0

我喜歡它,很好的解決方案 –

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; 
    } 
} 
1

你可以嘗試刪除<div class="row">,讓他們疊加。如果你確定設置所有的選項,比如<div class="col-xs-3 col-sm-3 col-md-3 col-lg-3">,那麼它們應該相應地堆疊。除非另有需要將它們分解成精確的行。這也是一個頭腦的快速思考..沒有測試,也許不是什麼需要。

此外,還有這有點太

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

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