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

PHP数组合并相同idu与day项的type字段实现方案

PHP合并相同idu+day的数组项并整合type字段

原始数组

$originalArray = array(
    array("idu" => 4830, "day" => "2023-10-21 16:00:00", "type" => 4),
    array("idu" => 4831, "day" => "2023-10-21 16:00:00", "type" => 4),
    array("idu" => 4831, "day" => "2023-10-21 16:00:00", "type" => 5),
    array("idu" => 4920, "day" => "2023-10-21 16:00:00", "type" => 4),
    array("idu" => 4920, "day" => "2023-10-21 16:00:00", "type" => 5),
    array("idu" => 4919, "day" => "2023-10-21 16:00:00", "type" => 4),
    array("idu" => 4918, "day" => "2023-10-21 16:00:00", "type" => 4)
);

实现思路

以idu和day的组合作为唯一标识,遍历原始数组时将相同标识的type值收集为数组,最后整理成目标格式。

代码实现

$mergedArray = [];

foreach ($originalArray as $item) {
    // 用idu+分隔符+day拼接成唯一键,避免键冲突
    $key = $item['idu'] . '|' . $item['day'];
    
    if (isset($mergedArray[$key])) {
        // 已存在则追加type值到数组
        $mergedArray[$key]['type'][] = $item['type'];
    } else {
        // 不存在则初始化记录,将单个type转为数组格式
        $mergedArray[$key] = [
            'idu' => $item['idu'],
            'day' => $item['day'],
            'type' => [$item['type']]
        ];
    }
}

// 移除临时键,重置数组索引为连续数字
$mergedArray = array_values($mergedArray);

// 打印结果
echo '<pre>';
print_r($mergedArray);
echo '</pre>';

代码说明

  1. 遍历过程中用idu和day拼接的字符串作为临时数组的键,确保相同组合的项能被归类到同一组。
  2. 遇到重复组合时,直接将当前type追加到对应数组;首次出现则初始化一条新记录,同时把单个type值转为数组。
  3. 最后通过array_values()清除临时键,让数组回到常规的数字索引结构。

输出结果示例

Array
(
    [0] => Array
        (
            [idu] => 4830
            [day] => 2023-10-21 16:00:00
            [type] => Array
                (
                    [0] => 4
                )

        )

    [1] => Array
        (
            [idu] => 4831
            [day] => 2023-10-21 16:00:00
            [type] => Array
                (
                    [0] => 4
                    [1] => 5
                )

        )

    [2] => Array
        (
            [idu] => 4920
            [day] => 2023-10-21 16:00:00
            [type] => Array
                (
                    [0] => 4
                    [1] => 5
                )

        )

    [3] => Array
        (
            [idu] => 4919
            [day] => 2023-10-21 16:00:00
            [type] => Array
                (
                    [0] => 4
                )

        )

    [4] => Array
        (
            [idu] => 4918
            [day] => 2023-10-21 16:00:00
            [type] => Array
                (
                    [0] => 4
                )

        )

)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 07:40:28