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

PHP实现多维数组中同一userid的登录日期合并

合并多维数组中相同userid的条目,整合lastlogindate为数组

可以通过遍历原数组,以userid为临时键快速分组,最终转换为目标格式,具体实现代码如下:

<?php
$data = [
    [
        "_id" => "6318956768e7df9342bc8349",          
        "userid" => "test1234AB", 
        "lastlogindate" => "2022-10-31T12:21:23.000000Z",  
    ], 
    [
        "_id" => "6318956768e7df9342bc8350",
        "userid" => "test123456",
        "lastlogindate" => "2022-08-31T12:21:23.000000Z",
    ],
    [
        "_id" => "63357dfd5435bcdfae485685",
        "userid" => "test1234AB",
        "lastlogindate" => "2022-12-31T12:21:23.000000Z",
    ], 
    [
        "_id" => "63357dfd5435bcdfae98316",  
        "userid" => "xyz123", 
        "lastlogindate" => "2022-12-31T12:21:23.000000Z",
    ] 
];

$temp = [];
foreach ($data as $item) {
    $userid = $item['userid'];
    // 首次遇到该userid,初始化条目并将lastlogindate转为数组
    if (!isset($temp[$userid])) {
        $temp[$userid] = [
            '_id' => $item['_id'],
            'userid' => $userid,
            'lastlogindate' => [$item['lastlogindate']]
        ];
    } else {
        // 已存在该userid,追加登录日期到数组
        $temp[$userid]['lastlogindate'][] = $item['lastlogindate'];
    }
}

// 将关联数组转为索引数组,匹配期望输出结构
$result = array_values($temp);

// 打印验证结果
echo '<pre>';
print_r($result);
echo '</pre>';
?>

代码说明

  • 用userid作为临时数组的键,遍历过程中可快速判断用户是否已被处理,时间复杂度为O(n),效率较高
  • 首次处理新userid时,将lastlogindate初始化为包含当前日期的数组
  • 遇到重复userid时,直接追加对应日期到数组中
  • 最后通过array_values()将关联数组转为索引数组,得到目标格式

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 00:01:10