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

PHP多维数组结构调整:按object_type与object_id分层分组实现方法

解决方案

你只需在原赋值逻辑中新增一层object_id作为分组键即可,原代码中不必要的内层遍历可以直接删除,直接读取数组字段效率更高。

修改后的代码如下:

$newArr = [];
foreach ($arr as $record) {
    $type = $record['object_type'];
    $objId = $record['object_id'];
    // 按 object_type -> object_id 两层分组存储记录
    $newArr['object_type'][$type][$objId][] = [
        'initiator_id' => $record['initiator_id'],
        'object_id' => $record['object_id'],
        'date' => $record['date'],
        'activity' => 'change' // 此处可替换为你实际业务逻辑生成的activity值
    ];
}

如果你需要每个object_id下的记录索引从1开始(而非PHP默认的0起始),可以在上述循环结束后追加以下代码调整键名:

// 可选:调整子数组索引从1开始
foreach ($newArr['object_type'] as &$typeGroup) {
    foreach ($typeGroup as &$objGroup) {
        $objGroup = array_combine(range(1, count($objGroup)), $objGroup);
    }
}
unset($typeGroup, $objGroup); // 销毁引用变量,避免后续操作出现异常

执行后输出的数组结构完全符合你期望的层级:先按object_type分组,同类型下再按不同object_id二次分组,每个object_id下挂载所有对应记录。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 11:54:00