You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP结合MySQL实现合并所有行keywords字段并按字母顺序排序的方法

PHP合并MySQL所有行的逗号分隔关键词并全局排序实现

需求说明

需要读取MySQL中market表所有行的keywords字段内容,该字段为英文逗号分隔的关键词,将所有关键词合并后按字母顺序输出完整排序列表。
现有数据示例:

  • voiture électrique, recyclage des batteries
  • Télétravail, travail à domicile, bureau
  • réchauffement climatique, effet de serre
  • coworking, travail

原代码问题

原代码逻辑是逐行拆分关键词、逐行排序输出,没有把所有行的关键词汇总到同一个数组中,因此无法实现全量关键词的全局排序。
原代码参考:

<?php

include_once ("config.php");
$query_top = "SELECT keywords FROM market WHERE keywords != ''"; 

if ($stmt_top = $bdd->prepare($query_top)) {
    $stmt_top->execute();
    $result_top = $stmt_top->get_result();
    $num_of_rows_top = $result_top->num_rows;
    $stmt_top->close();
}

while ($row_kw = $result_top->fetch_assoc()) 
{
    $keywords = $row_kw['keywords'];
    $array = array_filter(array_map('trim', explode(',', $keywords)));
    sort($array);
    $array = implode('<br>', $array);
    echo $array . '<br/>';
}
?>

最终实现方案

调整逻辑为先收集所有关键词再统一做排序处理,针对法语等带特殊重音字符的语言,使用PHP内置的Collator类做本地化排序,避免特殊字符排序异常。
可运行代码如下:

// 初始化全局关键词存储数组
$allKeywords = [];

while ($row_kw = $result_top->fetch_assoc()) 
{
    // 拆分当前行关键词并入全局数组
    $allKeywords = array_merge($allKeywords, explode(',', $row_kw['keywords']));
}

// 统一处理:去除关键词前后空格、过滤空值
$allKeywords = array_filter(array_map('trim', $allKeywords));

// 法语本地化排序,适配带重音的法语字符
$collator = new Collator('fr_FR');
$collator->asort($allKeywords);

// 输出排序结果
echo implode('<br>', $allKeywords) . '<br/>';

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 01:27:02