如何在PHP while循环中每两行满足连续获胜条件时递增变量?
解决连续两行数据统计问题的PHP实现
方案一:逐行遍历并记录上一行状态
这种方式无需提前加载所有数据,适合大数据量场景:
$cnt = 0; $prev_result = null; // 存储上一行的result值 while ($row = mysqli_fetch_array($res)) { $current_result = $row['result']; // 仅当存在上一行,且前后两行result均为"vincente"时递增计数器 if ($prev_result !== null && $prev_result === 'vincente' && $current_result === 'vincente') { $cnt++; } // 更新上一行结果,供下一次循环对比 $prev_result = $current_result; }
方案二:先加载所有数据,再按两行一组处理
如果需要明确按“两行一组”的逻辑处理,可以先把数据存入数组再遍历:
$cnt = 0; $rows = []; // 先将所有result字段存入数组 while ($row = mysqli_fetch_array($res)) { $rows[] = $row['result']; } // 遍历数组,每次取连续两行判断 for ($i = 0; $i < count($rows) - 1; $i++) { if ($rows[$i] === 'vincente' && $rows[$i + 1] === 'vincente') { $cnt++; } }
逻辑说明
- 两种方案都满足需求:仅当连续两行的
result均为vincente时,$cnt才加1;前一行是vincente后一行是perdente时不做递增操作。 - 方案一更节省内存,无需一次性加载所有数据;方案二逻辑更直观,适合数据量较小的场景。
内容的提问来源于stack exchange,提问作者Tony Poli
相关产品推荐
相关产品推荐

