You need to enable JavaScript to run this app. PHP遍历UNION ALL查询结果 为每个分类最后条目添加单次自定义跳转链接
优惠活动
大模型
产品
解决方案
定价
更多

PHP遍历UNION ALL查询结果 为每个分类最后条目添加单次自定义跳转链接

代码实现方案

核心调整思路:在分类块的边界位置输出跳转链接,不再每遍历一行就重复输出。需要覆盖两个跳转触发场景:

  1. 遍历到新分类的第一行时,说明上一个分类的所有条目已经输出完成,此时补上上一个分类的跳转链接
  2. 整个循环遍历全部结束后,最后一个分类没有后续的新分类触发跳转逻辑,需要单独补上它的跳转链接

配套SQL优化

为了避免数据库返回结果打乱分类块的顺序,保证同分类数据连续相邻,可以给查询加统一的排序标识:

SELECT 1 AS block_order, * FROM table WHERE category = 1 LIMIT 10
UNION ALL
SELECT 2 AS block_order, * FROM table WHERE category = 2 LIMIT 6
UNION ALL
SELECT 3 AS block_order, * FROM table WHERE category = 3 LIMIT 11
ORDER BY block_order

注意:如果不加排序,部分数据库环境下可能出现同分类数据被拆分穿插的情况,导致分类判断逻辑失效。

修正后的PHP代码

$c = "";
foreach ($query as $row)
{
  // 检测到分类切换,先完成上一个分类的收尾跳转
  if ($c !== "" && $c != $row['category']) {
    echo "<a href='/category/{$c}'>Go to category {$c}</a><br>";
  }

  // 进入新分类,输出分类标题
  if ($c != $row['category']) {
     echo "Category " . $row['category'] . "<br>"; 
     $c = $row['category'];
  }

  // 输出当前条目
  echo "- " . $row['item'] . "<br>"; 
}

// 循环结束,补上最后一个分类的跳转链接
if ($c !== "") {
  echo "<a href='/category/{$c}'>Go to category {$c}</a><br>";
}

效果验证

代码运行后输出的结构完全匹配预期:

Category 1
- Item 1
- Item 2
- Item 3
Go to category 1
Category 2
- Item 4
- Item 5
Go to category 2
Category 3
- Item 6
Go to category 3

内容的提问来源于stack exchange,提问作者Kolasac

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.11.07 13:54:05