如何在MySQL PDO查询的foreach循环中保留上一次的counter值
你只需要在foreach循环外部提前声明一个存储上一轮counter值的变量即可,默认可以初始化为null用来标识第一次循环:
// 初始化上一轮counter的存储变量,初始值可根据你的业务需求调整 $previousCounter = null; // 原写法中的$db->($sql)应为PDO的query执行方法,这里补全合理写法 foreach ($db->query($sql) as $row) { // 此处$previousCounter就是上一轮循环的counter值 // 第一次循环时它是你设置的初始值,可单独加逻辑判断处理 if ($previousCounter !== null) { // 这里写需要用到上一轮counter的业务逻辑 // 示例:计算两次counter的差值 $diff = $row['counter'] - $previousCounter; } $currentCounter = $row['counter']; // ... 其他业务逻辑 // 本轮逻辑处理完成后,将当前counter赋值给存储变量,供下一轮使用 $previousCounter = $currentCounter; }
如果有需要同时使用上一行其他字段的需求,你也可以直接存储上一整行数据,逻辑完全一致:
$previousRow = null; foreach ($db->query($sql) as $row) { if ($previousRow !== null) { // 可直接访问上一行的任意字段 echo $previousRow['counter']; } // ... 业务逻辑 $previousRow = $row; }
内容的提问来源于stack exchange,提问作者Keith D Kaiser
相关产品推荐
相关产品推荐

