2012-02-29 94 views
2

我有一個電子商務模板的代碼,我正在做開源。 。 。如何讓'foreach'顯示PHP中每個類別的3個結果?

你可以檢查一下!這些商店正在連續顯示3個數字!即..,所有的行正在顯示。

我有一段代碼從Db中獲取數據並顯示商店信息。 ..

我只希望這個foreach僅限於3個結果。 。 。我也還需要一個更按鈕,它depecting其他店一樣 「更多>>」 底部

<?php 
    if(count($this->store_list)>0){ 
      foreach($this->store_list as $store){ 
      ?> 
    <div id="menu">   
    <span class="cons_title fl"><a href="<?php echo PATH.'store/'.$store->title_url.'.html'; ?>"><h2><?php echo ucfirst($store->name); ?></h2></a></span> 

      <div class="cons_bot fl clr"> 

        <ul> 
        <li><h4><?php echo $store->address1; ?>,</h4></li> 
        <li><h4><?php echo $store->address2; ?>,</h4></li> 
        <li><h4><?php echo $store->area_name; ?>,</h4></li> 
        <li><h4><?php echo ucfirst($store->city_name); ?>,</h4></li> 
        <li><h4><?php echo $store->pin; ?></h4></li> 
        <li><h4>PH:</h4><h4><?php echo $store->phone; ?></h4></li> 
        </ul> 
        </div> <?php 
    } 
     ?> 
+0

只實現計數變量,增加它每次經過循環,並打破了,如果你達到3 – 2012-02-29 06:52:11

回答

3

改變了...

foreach($this->store_list as $store){ 
      ?> 

這個...

$number_output = 0; 
foreach($this->store_list as $store){ 
    $number_output++; 
    if($number_output > 3) break; 
      ?> 
3

您應該添加LIMIT子句數據庫查詢:

SELECT address1, address2, area_name, city_name, pin, phone from TABLE where 1 = 1 LIMIT 3; 

這隻會檢索3條記錄,所以你可以保持你的PHP相同。

+0

雖然這會的工作,我覺得對於可讀性的原因,並能夠再進行修改,使用一個計數器變量更有意義.. – 2012-02-29 06:57:10

+1

我完全不同意,你增加了不必要的開銷與計數器變量,並膨脹你的代碼沒有真正的原因。更何況拉數百行只使用3是愚蠢的。只拉你需要的行! – Developer 2012-02-29 07:00:55

+0

這使得數據庫查詢所牽引的唯一東西是每個存儲區一行的結果集。假設在OP中迭代的東西是'$ this-> store_list',那實際上可能並非如此。 – Amber 2012-02-29 07:13:45

0

有每個循環後三次嘗試打破..

<?php 
    if(count($this->store_list)>0){ 
    $ctr =1; 
     foreach($this->store_list as $store){ 
      if($ctr == 3) break; 
     ?> 
    <div id="menu">   
    <span class="cons_title fl"><a href="<?php echo PATH.'store/'.$store->title_url.'.html'; ?>"><h2><?php echo ucfirst($store->name); ?></h2></a></span> 

     <div class="cons_bot fl clr"> 

       <ul> 
       <li><h4><?php echo $store->address1; ?>,</h4></li> 
       <li><h4><?php echo $store->address2; ?>,</h4></li> 
       <li><h4><?php echo $store->area_name; ?>,</h4></li> 
       <li><h4><?php echo ucfirst($store->city_name); ?>,</h4></li> 
       <li><h4><?php echo $store->pin; ?></h4></li> 
       <li><h4>PH:</h4><h4><?php echo $store->phone; ?></h4></li> 
       </ul> 
       </div> <?php 
    $ctr++; } 
    ?> 
+0

,我還需要一個更多的按鈕,將其分配到其他商店,如底部的「More >>」 – Beginner 2012-02-29 07:11:40

0

補充一點:$countvar=array();

然後,每一次這樣做:

if(empty($countvar[$store->category]))$countvar[$store->category]=1; 
else{if($countvar[$store->category]<3){$countvar[$store->category]++; [DISPLAY THE THINGS]}} 

這對的情況下你在一個地方列出所有商店。如果您將其用於類別,其他解決方案運作良好。

0
foreach (array_slice ($this->store_list, 0, 3) as $store)