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

如何将查询所得的UID与Gameid数组按Gameid重新分组?

如何将用户表查询结果按Gameid分组为多维数组?

我来帮你搞定这个数组分组的需求~你从user_table(包含自增UID字段和随机gameid字段)查询后得到了如下格式的数组:

array(
    0 => array('UID' => 1, 'gameid' => 334613),
    1 => array('UID' => 2, 'gameid' => 704234),
    2 => array('UID' => 3, 'gameid' => 704234)
);

你的目标是把它转换成以gameid为键、对应UID集合为值的多维数组,也就是这样的结构:

$array = array(
    334613 => array(0 => 1),
    704234 => array(0 => 2, 1 => 3)
);

下面给你两种实用的实现方式:

方法一:基础循环遍历

这是最直观易懂的写法,逻辑清晰不容易出错,适合所有场景:

// 假设你的原查询结果数组是$originalArray
$groupedArray = [];

foreach ($originalArray as $userItem) {
    $currentGameId = $userItem['gameid'];
    $currentUid = $userItem['UID'];
    
    // 如果当前gameid还没在分组数组中,先初始化一个空数组
    if (!isset($groupedArray[$currentGameId])) {
        $groupedArray[$currentGameId] = [];
    }
    
    // 将当前UID追加到对应gameid的数组里
    $groupedArray[$currentGameId][] = $currentUid;
}

方法二:使用array_reduce函数

如果你偏爱更紧凑的函数式写法,array_reduce可以用更简洁的代码完成需求:

$groupedArray = array_reduce($originalArray, function($result, $item) {
    // 直接把UID放到对应gameid的数组中,PHP会自动初始化空数组
    $result[$item['gameid']][] = $item['UID'];
    return $result;
}, []);

这两种方法都能完美得到你想要的目标数组,基础循环适合新手理解调试,array_reduce则是更优雅的写法,根据你的习惯选择就好~

内容的提问来源于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:04:17