2015-11-02 78 views
2

這是我認爲應該如何工作的思考過程。它應該如何工作如何在每第10個循環做一些事情時循環跳過每第11行的表格?

if ($result->num_rows > 0) { 
    while($row = $result->fetch_assoc()) && ($row % 11 != 0)) { 
     $counter++; 
     if ($counter % 10 == 0) { 
     // Do something. 
     } 
    } 
} 

實施例:

行1 =計數器1
行2 =計數器2
行3 =計數器3
行4 =計數器4
第5行=計數器5
第6行=計數器6
第7列=計數器7
第8列=計數器8
行9 =計數器9
行10 =計數器10
行11 =跳過
行12 =計數器11
行13 =計數器12
行14 =計數器13
行15 =計數器14
行16 =計數器15
行17 =計數器16
行18 =計數器17
行19 =計數器18
列20 =計數器19
列21 =計數器20
行22 =跳過
行23 =計數器21

對於進一步參考,以下是完整的一段代碼,我已經寫了,提醒用戶在我的網絡商店,如果他們有10票在他們的購物車中,如果他們添加了他們,他們會得到下一個。由於賈卡爾

$fancyCounter = 1; 

if ($result->num_rows > 0) { 

    // output data of each row 
    while($row = $result->fetch_assoc()) { 
     $rawCounter++; 
     if ($rawCounter % 11 !== 0) { 
      $fancyCounter++; 
     } 
     else { 
      $fancyCounter = 1; 
     } 
    } 
} 
$result->close(); 

if ($fancyCounter % 11 == 0) { 
    $freeTicketAvailable = 1; 
} else { 
    $freeTicketAvailable = 0; 
} 
+1

除了每10日和11日之外,你想對其他行做什麼? – Jakar

+0

使用while對迭代結果進行迭代,並將計數增量放在循環體的頂部。將11行和10行條件放入循環內的if塊中。繼續;當mod 11爲0時 – Gavin

回答

1

在這裏,有一個$rawCounter其計數行迭代和$fancyCounter其保持行數只是你如何張貼。

while($row=$result->fetch_assoc()){ 
    $rawCounter++; 
    if ($rawCounter%11!==0){ 
     $fancyCounter++; 
    } 
    if ($rawCounter%10===0){ 
     //Do Something 
    } 
} 

Here is an example給你的例子輸出。

如果您需要的行數和櫃檯數量分開的,你也可以使用一個$counter$skipCount,始終遞增$counter,只有在$counter%11==0增加$skipCount並得到你想要的計數器計數(即Row 12 = Counter 11, Row 23 = Counter 21),你'd use echo "Row {$counter} = Counter ".($counter-$skipCount)

+0

謝謝你,我喜歡你的想法。我會嘗試一下。 –

1

試試這個,

<?php 

$counter = 1; 

while ($counter <= 33) { 

    if ($counter % 10 == 0) { 
     // On 10. 
     echo "Do Something<br/>"; 
    } else if ($counter % 11 == 0) { 
     // On 11. 
     echo "Skip<br/>"; 
    } else { 
     // Other numbers. 
     echo $counter . "<br/>"; 
    } 
    $counter++; 
} 

?> 

您需要更換while();中的條件,以適應你。

輸出

1 2 3 4 5 6 7 8 9 Do Something Skip 12 13 14 15 16 17 18 19 Do Something 21 Skip 23 24 25 26 27 28 29 Do Something 31 32 Skip

+0

示例輸出具有'行12 =計數器11,行23 =計數器21'。用你的代碼,計數器和行號將是相同的。 – Jakar

1

這應該這樣做。你試圖在你的while條件,這可能是即使是在PHP不確定的劃分由多個數組($行);)

if ($result->num_rows > 0) { 
    $skipCounter = 0; 
    $tenCounter = 0; 
    $counter = 0; 
    while($row = $result->fetch_assoc()) { 
     ++$skipCounter; 
     if ($skipCounter == 11) { 
      $skipCounter = 0; 
      continue; 
     } 
     ++$counter 
     ++$tenCounter; 
     echo "Counter: ".$counter; 
     if ($tenCounter == 10) { 
      $tenCounter = 0; 
      echo "Do something"; 
     } 
    } 
} 
+0

示例輸出具有'行12 =計數器11,行23 =計數器21'。用你的代碼,計數器和行號將是相同的。 – Jakar

+0

謝謝你,這是我想要的,但我不確定它是否工作正常。基本上我想爲每購買10件物品都贈送一件免費物品,並且我想讓客戶知道如果他們有10件物品符合免費物品的條件。 我已經知道了,所以折扣適用於他們有11個項目,但我不想讓他們知道他們是否是一個短。 –

+0

謝謝你的評論,原來我不明白這個問題。接受的答案看起來很完美。爲了增加一點價值,我更新了答案以避免分歧。這是更多的代碼,但應該運行得更快一點。 – i4h