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

如何将查询得到的一维数组转换为以gameid为键的多维数组?

两种方式实现你要的数组结构:重组现有数组 or 直接数据库分组

一、PHP代码重组已有的原始数组

如果你已经拿到了查询返回的原始数组,直接用循环遍历就能把它转成你想要的结构,代码简单易懂:

// 原始数组
$originalArray = [
    ['UID' => 1, 'gameid' => 334613],
    ['UID' => 2, 'gameid' => 704234],
    ['UID' => 3, 'gameid' => 704234]
];

// 初始化目标数组
$targetArray = [];

// 遍历重组
foreach ($originalArray as $item) {
    $gameId = $item['gameid'];
    $uid = $item['UID'];
    
    // 如果该gameid还没在目标数组里,先初始化一个空数组
    if (!isset($targetArray[$gameId])) {
        $targetArray[$gameId] = [];
    }
    
    // 把UID追加到对应gameid的数组里
    $targetArray[$gameId][] = $uid;
}

// 打印查看结果
print_r($targetArray);

运行这段代码后,就能得到你想要的以gameid为键、对应UID数组为值的结构。

二、直接从数据库查询获取分组结果(更高效)

其实没必要先查出来再重组,咱可以直接在数据库查询阶段就完成分组,省掉后续的代码处理步骤。这里以MySQL为例:

1. 编写分组查询的SQL语句

SELECT gameid, GROUP_CONCAT(UID SEPARATOR ',') AS uids
FROM your_table_name
GROUP BY gameid;

这个SQL会按gameid分组,把每个组里的UID用逗号拼接成字符串。

2. PHP里把查询结果转成目标数组

拿到查询结果后,只需要把拼接的UID字符串转成数组就行:

// 假设$db是你的数据库连接对象,执行查询
$result = $db->query("SELECT gameid, GROUP_CONCAT(UID SEPARATOR ',') AS uids FROM your_table_name GROUP BY gameid");

$targetArray = [];
while ($row = $result->fetch_assoc()) {
    // 把逗号分隔的字符串转成UID数组
    $targetArray[$row['gameid']] = explode(',', $row['uids']);
}

print_r($targetArray);

这样一步到位,直接拿到你想要的数组结构,效率还更高~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:18:29