2015-11-02 52 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