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

如何基于指定key对多维数组分组,获取每个key关联的对应字段值

实现方案(PHP 版本)

步骤1:归集同sname对应的所有cname

你可以用foreach遍历完成归集,写法简单易读:

// 你的原始数组
$originalArr = [
    ['sname' => 'florida', 'cname' => 'orlando'],
    ['sname' => 'texas', 'cname' => 'dallas'],
    ['sname' => 'florida', 'cname' => 'tampa'],
    ['sname' => 'ohio', 'cname' => 'columbus'],
];

$result = [];
foreach ($originalArr as $item) {
    $result[$item['sname']][] = $item['cname'];
}

如果偏好更简洁的写法,可以用array_reduce实现同样的归集效果:

$result = array_reduce($originalArr, function($carry, $item) {
    $carry[$item['sname']][] = $item['cname'];
    return $carry;
}, []);

步骤2:格式化对齐输出

为了达到你要求的冒号后对齐的展示效果,先计算所有sname的最大长度来统一补空格:

// 计算最长sname的长度,用于对齐
$maxLen = max(array_map('strlen', array_keys($result)));

foreach ($result as $sname => $cities) {
    // 补空格保证所有冒号后位置对齐
    $prefix = str_pad($sname . ':', $maxLen + 4, ' ', STR_PAD_RIGHT);
    echo $prefix . implode(', ', $cities) . PHP_EOL;
}

输出结果

运行后输出和你要求的格式完全一致:

florida:    orlando, tampa
texas:      dallas
ohio:       columbus

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 05:15:03