2013-03-21 89 views
0

我不太確定如何處理這個問題,但我目前有一個while循環輸出<li></li>計數器內部while循環每X次增加

假設有35行,我希望計數器每五次增加一次。

所以輸出會是這樣的。

- 1 Name 
- 1 Name 
- 1 Name 
- 1 Name 
- 1 Name 
- 2 Name 
- 2 Name 
- 2 Name 
- 2 Name 
- 2 Name 
- 3 Name 
- 3 Name 
- 3 Name 
- 3 Name 
- 3 Name 
- 4 Name and so on... 

我已經試過整個循環計數,比較數字,看它是否是不到五年,如果沒有再增加,但我知道這是不正確的。似乎無法弄清楚最佳解決方案。

while ($stmt->fetch()) { 

      $HTML .= "<li data-id='$id' data-name='$name'>$count Name</li>";    
    } 

爲了使這個更清晰...基本上我想有一個計數器變量運行。從1開始,但每隔五次通過while循環,我想將此計數變量加1。

+0

你的問題不明確 – 2013-03-21 05:14:05

+0

PHP是否有模運算符? loopno mod 5 + 1將起始於從0開始的索引。 – 2013-03-21 05:14:12

+3

使用兩個計數器,一個計數到5,每次命中5時,您增加第二個計數器。然後在你的輸出中包含第二個計數器...或者使用一個計數器,然後將它除以5,並在不到2分鐘內添加1個 – DavidA 2013-03-21 05:15:32

回答

3
$count = $rows = 0; 
while ($stmt->fetch()) { 
    if ($rows % 5 == 0) 
     $count++; 
    $rows++; 
    $HTML .= "<li data-id='$id' data-name='$name'>$count Name</li>";    
} 
+0

在if語句似乎工作後移動'$ rows ++;'!謝謝 – Jako 2013-03-21 05:26:03

+0

啊,所以這是預期的。我沒有想到。 – 2013-03-21 05:27:54

+0

@Jako,我相應地編輯了我的答案。 – 2013-03-21 05:29:59

-1
$i=1 
while ($stmt->fetch()) { 

     if($i%5==0){ 
      $HTML .= "<li data-id='$id' data-name='$name'>$count Name</li>";    
     } 
$i++; 
    } 
+0

不完全。這輸出5,10,15,20 ... – 2013-03-21 05:17:31

1

你可以使用array_fill()(僞代碼):

<?php 

$li = "<li>Item</li>"; 

$row = array_fill(0, 5, $li); 

$list = array_fill(0, 35, $row); 

print_r($list); 

?> 

http://codepad.org/ETCv3GBK

如:

$count = 0; 

while ($stmt->fetch() && $count++) { 
    $HTML .= implode('', array_fill(0, 5, "<li data-id='$id' data-name='$name'>$count Name</li>")); 
} 

另一個演示(點燃。IO可以不工作的節省,雖然):

https://ignite.io/code/514a9bf5ec221ee821000005

+0

這種方法忽略了重要的'$ stmt-> fetch()'。很可能每次迭代都會使用該數據庫記錄中的某個唯一值。 – 2013-03-21 05:43:49

+0

對。那麼,這值得一試。 – 2013-03-21 05:47:29

0
for($i=1; $i <= 20; $i++){ 
    $array[] = "Name " . $i; 
} 

$count = 1; 
$output = 1; 
for($i=0; $i < 20; $i++){ 
    if($count++ < 5) 
     echo $output . ". " . $array[$i] . "<BR>"; 
    else{ 
     $count = 1; 
     echo $output++ . ". " . $array[$i] . "<BR>"; 
    } 
} 

返回

  1. 名稱1
  2. 名稱2
  3. 名稱3
  4. 名稱4
  5. 名稱5
  6. 名稱6
  7. 名稱7
  8. 名稱8
  9. 名稱9
  10. 名稱10
  11. 名稱11
  12. 名稱12
  13. 名稱13
  14. 名稱14
  15. 名稱15
  16. 名16
  17. 名稱17
  18. 名稱18
  19. 名稱19
  20. 名稱20