如何将查询所得的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
相关产品推荐
相关产品推荐

