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

PHP实现求职门户公司名称首字母分组排序(无数据字母跳过)

Hey,我来帮你搞定这个求职门户里公司按首字母分组的需求!其实核心思路就是先把数据按名称排好序,然后遍历的时候跟踪当前的首字母,遇到新字母就输出分组标题,没有对应公司的字母自然就不会显示啦。下面是具体的实现步骤:

具体解决方案

1. 先优化SQL查询

让数据库返回的结果直接按公司名称升序排列,这样后续分组处理会更顺畅:

$sql = "SELECT * FROM companies ORDER BY company_name ASC";
$result = mysqli_query($con, $sql);

2. 编写PHP分组逻辑

我们需要一个变量来记录当前所在的首字母分组,同时统一处理大小写(避免A和a分成两个组),具体代码如下:

<?php
$sql = "SELECT * FROM companies ORDER BY company_name ASC";
$result = mysqli_query($con, $sql);
$currentGroupLetter = ''; // 跟踪当前的首字母分组

while($data = mysqli_fetch_array($result)) {
    $companyName = trim($data['company_name']);
    // 提取首字母并转成大写,确保分组统一
    $firstLetter = strtoupper(substr($companyName, 0, 1));
    
    // 当遇到新的首字母时,输出分组标题并开启列表
    if ($firstLetter !== $currentGroupLetter) {
        // 如果不是第一个分组,先关闭上一个列表
        if ($currentGroupLetter !== '') {
            echo "</ul>";
        }
        $currentGroupLetter = $firstLetter;
        echo "<h3>$currentGroupLetter</h3>";
        echo "<ul>";
    }
    
    // 输出当前公司
    echo "<li>$companyName</li>";
}

// 关闭最后一个列表标签(如果有分组的话)
if ($currentGroupLetter !== '') {
    echo "</ul>";
}
?>

一些细节补充

  • 用trim()处理公司名称前后的空格,避免因为空格导致的错误分组
  • strtoupper()保证不管公司名称是大写还是小写开头,都能归到同一个字母组里
  • 如果你的项目里有非英文的公司名称(比如中文),可以额外实现一个拼音首字母转换的函数,替换掉substr($companyName, 0, 1)这部分逻辑就行

这样就能完美实现你要的效果:只有存在对应公司的首字母才会显示分组标题,没有的自动跳过~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:45:51