这是我认为应该如何运作的思考过程。
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;
}
答案 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
答案 1 :(得分:1)
这应该这样做。您试图在while条件中将数组($ row)除以一个数字,即使在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";
}
}
}
答案 2 :(得分:1)
在这里,有一个$rawCounter
计算迭代的行数,$fancyCounter
可以计算行数。
while($row=$result->fetch_assoc()){
$rawCounter++;
if ($rawCounter%11!==0){
$fancyCounter++;
}
if ($rawCounter%10===0){
//Do Something
}
}
提供示例输出的
如果您需要将行号和计数器号分开,您还可以使用$counter
和$skipCount
,并始终增加$counter
并仅增加$skipCount
$counter%11==0
并获得您想要的计数器(即Row 12 = Counter 11, Row 23 = Counter 21
),您可以使用echo "Row {$counter} = Counter ".($counter-$skipCount)