提问人:Nashie 提问时间:2/12/2023 最后编辑:SyscallNashie 更新时间:2/12/2023 访问量:69
PHP while 循环回显每 3 行
PHP while loop echo every 3 rows
问:
我试图在数据库中的 3 行后显示一些内容,但很难让它工作。
这是我目前的代码
<?php
$query = "SELECT * FROM articles ORDER BY id DESC LIMIT 6";
$stmt = $con->prepare($query);
$stmt->execute();
$num = $stmt->rowCount();
if ($num>0) {
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
extract($row);
echo "DATA FROM DATABASE";
if (($num % 3) == 0) {
echo '<h1>code every 3 rows</h1>';
}
$num++;
}
}
// if no records found
else{
echo "no data found";
}
?>
目前,这是在每行 1 和 4 之后输出的。
我尝试了以下方法。
if ($num % 3) {
echo '<h1>code every 3 rows</h1>';
}
$num++;
这将在第 2 行、3 行、5 行之后输出
我敢肯定,这是一件简单的事情,我看得太过分了,但任何帮助我指明正确方向的帮助都会很棒。
答:
2赞
Syscall
2/12/2023
#1
您可以使用:($num - 1) % 3 == 2
if (($num - 1) % 3 == 2) {
echo '<h1>code every 3 rows</h1>';
}
$num++;
echo "DATA FROM DATABASE";
例:
foreach (range(0, 6) as $k => $i) {
if (($k - 1) % 3 == 2) {
echo "---\n";
}
echo "$i\n";
}
输出:
0
1
2
---
3
4
5
---
6
或者,如果您之前执行以下操作:$k % 3 == 2
echo
foreach (range(0, 6) as $k => $item) {
echo "$item\n";
if ($k % 3 == 2) {
echo "---\n";
}
}
3赞
Wisdom Ighofose
2/12/2023
#2
您的错误可以在您初始化的地方找到。将其设置为行计数,然后开始增加循环中的$num。您的代码应该像这样重构:$num
<?php
$query = "SELECT * FROM articles ORDER BY id DESC LIMIT 6";
$stmt = $con->prepare($query);
$stmt->execute();
$count = $stmt->rowCount();
//$num should start from 1 and increase in the loop
$num = 1;
if($count>0){
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)){
extract($row);
echo "DATA FROM DATABASE";
if( ($num % 3) == 0){
echo '<h1>code every 3 rows</h1>';
}
$num++;
}
}
// if no records found
else{
echo "no data found";
}
?>
评论
0赞
Nashie
2/12/2023
谢谢,这很有道理;我有过度思考的习惯。再次感谢。
评论
extract($row);