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

PHP中如何将多维数组按相同元素分组为子数组集合

PHP多维数组按相同元素分组的解决方案

你可以通过分组后提取值的方式实现需求,核心是先为每个重复元素生成唯一标识作为分组键,再去掉键保留子数组集合。以下是两种可行的实现方式:

方法一:使用array_reduce

$arrays = [
    ['id' => 1, 'name' => 'main'],
    ['id' => 1, 'name' => 'main'],
    ['id' => 2, 'name' => 'main'],
    ['id' => 1, 'name' => 'main'],
    ['id' => 2, 'name' => 'main']
];

// 按元素属性分组
$grouped = array_reduce($arrays, function($carry, $item) {
    // 用id和name拼接生成唯一分组键,确保相同元素归为一组
    $key = $item['id'] . '_' . $item['name'];
    if (!isset($carry[$key])) {
        $carry[$key] = [];
    }
    $carry[$key][] = $item;
    return $carry;
}, []);

// 去掉关联键,转为索引数组结构
$result = array_values($grouped);

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

方法二:使用foreach循环(更直观)

$arrays = [
    ['id' => 1, 'name' => 'main'],
    ['id' => 1, 'name' => 'main'],
    ['id' => 2, 'name' => 'main'],
    ['id' => 1, 'name' => 'main'],
    ['id' => 2, 'name' => 'main']
];

$grouped = [];
foreach ($arrays as $item) {
    $key = $item['id'] . '_' . $item['name'];
    $grouped[$key][] = $item;
}
$result = array_values($grouped);

print_r($result);

说明

  • 两种方法都通过id和name拼接的唯一键来区分不同组,确保所有属性完全相同的元素被归为一组。
  • 最后用array_values()去掉分组时生成的关联键,得到你需要的纯索引型多维数组结构。
  • 你之前尝试array_map未成功,是因为array_map仅对单个元素做转换,无法完成需要累积状态的分组操作,array_reduce或foreach才是更合适的选择。

内容的提问来源于stack exchange,提问作者Zain Ul Abideen

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 05:50:22