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

PHP多维数组去重合并:相同首元素的时间值累加

刚好做过类似的需求,你这个场景核心是按子数组首元素分组+对应时间字段累加,不是单纯去重,我给你捋一遍实现思路和代码:

核心思路
  1. 用关联数组作为临时容器,以子数组的第一个元素为键,这样天然就能实现“去重”的效果(相同键只会保留一个条目)
  2. 遍历原数组时,对每个子项的时间字段做拆分、数值累加,再重新拼接成字符串
  3. 最后如果需要和示例一样的索引数组结构,用array_values()重置键名即可
具体代码实现

首先定义你的原数组:

$originalArray = [
    ["One", "11:31"],
    ["Two", "11:31"],
    ["Three", "11:31"],
    ["One", "11:31"]
];

然后是处理逻辑:

// 初始化分组容器
$groupedData = [];

foreach ($originalArray as $item) {
    $groupKey = $item[0];
    $timeStr = $item[1];
    
    // 把时间字符串拆成可计算的两部分
    list($val1, $val2) = explode(':', $timeStr);
    
    if (isset($groupedData[$groupKey])) {
        // 如果分组已存在,拆分已有时间并累加
        list($existingVal1, $existingVal2) = explode(':', $groupedData[$groupKey][1]);
        $newVal1 = (int)$existingVal1 + (int)$val1;
        $newVal2 = (int)$existingVal2 + (int)$val2;
        
        // 更新分组的时间字段
        $groupedData[$groupKey][1] = "{$newVal1}:{$newVal2}";
    } else {
        // 分组不存在,直接添加当前项
        $groupedData[$groupKey] = $item;
    }
}

// 转成索引数组(和你要的输出结构一致)
$result = array_values($groupedData);

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

运行这段代码后,就能得到你想要的输出:

Array
(
    [0] => Array
        (
            [0] => One
            [1] => 22:62
        )

    [1] => Array
        (
            [0] => Two
            [1] => 11:31
        )

    [2] => Array
        (
            [0] => Three
            [1] => 11:31
        )

)
额外优化:处理时间进位

你提到实际数据中第二个值不同,如果这个字段是标准的时分或分秒,累加后可能出现超过60的情况(比如示例里的62分),可以加个进位处理逻辑:

// 替换累加后的时间拼接部分
$total = (int)$existingVal1 * 60 + (int)$existingVal2 + (int)$val1 * 60 + (int)$val2;
$newVal1 = floor($total / 60);
$newVal2 = $total % 60;
$groupedData[$groupKey][1] = "{$newVal1}:{$newVal2}";

这样示例里的11:31 + 11:31就会变成23:02,更符合时间逻辑。

用到的PHP函数说明
  • foreach:遍历数组的基础工具,逐个处理每个子项
  • explode():将字符串按指定分隔符拆分,这里用来拆分时间字符串
  • isset():检查分组容器中是否已存在当前键,判断是新增还是累加
  • array_values():将关联数组转成索引数组,重置键名从0开始
  • floor():向下取整,用于处理时间进位计算

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 07:02:17