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

PHP如何按数组键名首字符分组并生成对应分类子数组?

PHP数组按键名首字符分组实现方案

核心逻辑

遍历原数组,提取每个元素键名的首字符作为一级分组键,将原键值对归入对应分组的子数组中即可。

完整实现代码

<?php
// 待处理的原始数组
$array = array(
    'Actual Hours' => 'http://www.example.com/actual',
    'Algorithm' => 'http://www.example.com/algorithm',
    'Time Clock App' => 'http://www.example.com/time',
);

$groupedResult = [];
foreach ($array as $itemKey => $itemVal) {
    // 提取键名首字符,统一转大写避免同字母大小写拆分分组
    // 用mb_substr兼容中文等多字节字符键名,纯英文场景可替换为substr
    $groupKey = strtoupper(mb_substr($itemKey, 0, 1));
    $groupedResult[$groupKey][$itemKey] = $itemVal;
}

// 如需按分组首字母排序,打开下一行注释即可
// ksort($groupedResult);

// 输出结果
print_r($groupedResult);

运行输出结果

执行上述代码后,得到的结构化结果和预期完全匹配:

Array
(
    [A] => Array
        (
            [Actual Hours] => http://www.example.com/actual
            [Algorithm] => http://www.example.com/algorithm
        )

    [T] => Array
        (
            [Time Clock App] => http://www.example.com/time
        )

)

注意事项

  • 若键名包含中文、特殊符号等非单字节字符,必须使用mb_substr函数截取首字符,否则会出现乱码、截取错误的问题,纯英文场景可直接使用substr简化写法
  • 统一首字符大小写的步骤不要省略,否则会出现同字母因大小写差异被拆分为两个独立分组的问题
  • 若需要按分组首字母排序,执行ksort($groupedResult)即可实现A-Z顺序排列
  • 若需要自定义首字符提取规则(比如忽略开头空格、特殊前缀),直接修改$groupKey的生成逻辑即可

内容的提问来源于stack exchange,提问作者Mittul At TechnoBrave

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 18:45:39