Php 我如何在每第11行跳过一个表,而在每第10行执行一次操作时循环一次?
这是我认为它应该如何工作的思考过程Php 我如何在每第11行跳过一个表,而在每第10行执行一次操作时循环一次?,php,mysql,Php,Mysql,这是我认为它应该如何工作的思考过程 if ($result->num_rows > 0) { while($row = $result->fetch_assoc()) && ($row % 11 != 0)) { $counter++; if ($counter % 10 == 0) { // Do something. } } } 它应该如何工作的示例: 第1行=计数器1 第2
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张票,如果他们添加了下一张票,他们将免费获得。谢谢Jakar
$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;
}
试试这个
<?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
做点什么
跳过
12
13
14
15
16
17
18
19
做点什么
21
跳过
23
24
25
26
27
28
29
做点什么
31
32
跳过
这样就可以了。您试图将数组($row)除以while条件中的一个数字,即使在PHP中,这个数字也可能是未定义的;)
这里有一个$rawCounter
,它对迭代的行进行计数,还有一个$fancyCounter
,它将按您发布的方式保持行计数
while($row=$result->fetch_assoc()){
$rawCounter++;
if ($rawCounter%11!==0){
$fancyCounter++;
}
if ($rawCounter%10===0){
//Do Something
}
}
这将给出您的示例输出
如果您需要将行号和计数器号分开,您也可以使用$counter
和$skipCount
,并且始终递增$counter
,并且只在$counter%11==0
上递增$skipCount
,以获得所需的计数器计数(即第12行=计数器11,第23行=计数器21
),您可以使用echo“Row{$counter}=counter”。($counter-$skipCount)
除了每隔10行和11行之外,您想对其他行执行什么操作?使用while只迭代获取的结果,并将计数增量放在循环体的顶部。将11行和10行条件放入循环内的if块中。继续;当mod 11为0时,示例输出为第12行=计数器11,第23行=计数器21
。使用代码时,计数器和行号将相同。示例输出为第12行=计数器11,第23行=计数器21
。根据你的代码,计数器和行号将是相同的。谢谢,伙计,这是我想要的,但我不确定它是否有效。基本上,我想为每购买10件商品提供一件免费商品,我想让客户知道,如果他们有10件商品,他们有资格获得一件免费商品。我已经拿到了,所以当他们有11件商品时,折扣适用,但我不想让他们知道是否少了一件。谢谢你的评论,原来我不明白这个问题。公认的答案似乎是完美的。为了增加一点价值,我更新了我的答案以避免分歧。这是更多的代码,但应该运行快一点。
while($row=$result->fetch_assoc()){
$rawCounter++;
if ($rawCounter%11!==0){
$fancyCounter++;
}
if ($rawCounter%10===0){
//Do Something
}
}