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

如何在PHP中按UID分组输出MySQL表vm_kuponer的指定行数据

按UID分组输出MySQL表中的投注数据(PHP实现)

我来帮你解决这个分组输出的问题,你需要把相同UID的投注值聚合起来,对应到指定用户名输出,这里有两种可行的实现方式:

方式一:PHP端分组处理数据

这种方式适合需要对投注数据做额外逻辑处理的场景,先把查询到的原始数据按UID分组,再结合用户名映射输出:

步骤1:整理查询结果为分组数组

首先遍历数据库返回的$results,将每个UID对应的投注值收集到一个数组中:

// 初始化空数组存储分组后的投注数据
$userBets = [];

foreach ($results as $row) {
    $uid = $row->uid;
    // 如果当前UID未在数组中,先初始化空数组
    if (!isset($userBets[$uid])) {
        $userBets[$uid] = [];
    }
    // 将当前投注值加入对应UID的数组
    $userBets[$uid][] = $row->bet;
}

步骤2:建立UID与用户名的映射并输出

定义UID和对应用户名的关联数组,然后遍历输出你想要的格式:

// UID到用户名的映射关系
$uidToName = [
    20 => 'Brian',
    21 => 'Dave'
];

// 遍历映射数组,格式化输出
foreach ($uidToName as $uid => $name) {
    if (isset($userBets[$uid])) {
        // 将投注数组合并为逗号分隔的字符串
        $betsList = implode(', ', $userBets[$uid]);
        echo "Name: {$name} Bets: {$betsList}\n";
        echo "_____________\n";
    }
}

方式二:数据库端聚合数据(更高效)

如果不需要对投注值做额外处理,可以直接用MySQL的GROUP_CONCAT函数在查询时就聚合投注值,减少PHP端的处理量:

步骤1:修改SQL查询语句

调整你的查询语句,按UID分组并聚合投注值:

SELECT uid, GROUP_CONCAT(bet SEPARATOR ', ') AS bets 
FROM vm_kuponer 
GROUP BY uid 
ORDER BY uid;

步骤2:PHP直接遍历输出

拿到聚合后的结果后,结合用户名映射直接输出:

$uidToName = [
    20 => 'Brian',
    21 => 'Dave'
];

foreach ($results as $row) {
    $name = $uidToName[$row->uid];
    echo "Name: {$name} Bets: {$row->bets}\n";
    echo "_____________\n";
}

两种方式都能实现你期望的输出格式,你可以根据实际需求选择合适的方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:20:03