如何在PHP的mysqli_fetch_array循环中显示每隔n行的记录?
解决PHP循环中仅显示指定行/每隔n行的问题
嘿,我明白你现在的困扰——看着别人的解决方案却没法套到自己的代码里确实让人头疼。先看看你的现有代码,它能正常遍历所有记录输出表格行,现在咱们来修改它实现你要的“仅显示每隔n行(这里是第2行)”的需求。
首先,核心思路是用一个计数器变量来追踪当前循环到了第几行,然后根据计数器的值判断是否输出这一行。这里分两种常见情况,你可以根据自己的实际需求选择:
情况1:仅显示第2行(单一行记录)
如果你的需求是只拿出结果集中的第2条记录来显示,那可以这样修改代码:
// 初始化计数器,从0开始 $counter = 0; while($row=mysqli_fetch_array($result, MYSQL_ASSOC)) { $counter++; // 每循环一次,计数器加1,标记当前是第几行 $date = $row['date']; $o_name = $row['o_name']; $g_name = $row['g_name']; // 只在计数器等于2的时候输出这一行 if ($counter === 2) { echo "<tr> <td>$date</td> <td>$o_name</td> <td>$g_name</td> </tr>"; // 如果找到第2行后不想继续循环,可以加break;节省资源 // break; } }
情况2:每隔1行显示一行(即第2、4、6...行,每2行取一行)
如果你的需求是每隔一行显示一行(也就是偶数行),那把判断条件改成取模运算即可:
$counter = 0; while($row=mysqli_fetch_array($result, MYSQL_ASSOC)) { $counter++; $date = $row['date']; $o_name = $row['o_name']; $g_name = $row['g_name']; // 当计数器是偶数时(能被2整除),输出这一行 if ($counter % 2 === 0) { echo "<tr> <td>$date</td> <td>$o_name</td> <td>$g_name</td> </tr>"; } }
为啥你之前的尝试可能失败?
大概率是这两个小问题:
- 计数器初始化后,没在循环里执行
$x++,导致计数器一直是0,永远触发不了判断条件; - 语法错误,比如
$x=0后面没加分号,导致代码直接报错。
你可以根据自己的实际需求选上面的其中一种写法,测试一下应该就能正常工作啦!
内容的提问来源于stack exchange,提问作者Jason
相关产品推荐
相关产品推荐

