Php 按分组创建数组
我正在制作一个高尔夫排行榜,其中我从一个特定的matchid中获取所有的球洞分数,并根据用户ID对它们进行分组。这部分很好用 我是这样做的:Php 按分组创建数组,php,arrays,mysqli,Php,Arrays,Mysqli,我正在制作一个高尔夫排行榜,其中我从一个特定的matchid中获取所有的球洞分数,并根据用户ID对它们进行分组。这部分很好用 我是这样做的: $playersArray = array(); $sql = "SELECT *, SUM(point) AS points, COUNT(*) AS holes, COUNT(*)*2-SUM(point) AS topar FROM fb_score WHERE matchid=$matchid GROUP BY userid"; $result
$playersArray = array();
$sql = "SELECT *, SUM(point) AS points, COUNT(*) AS holes, COUNT(*)*2-SUM(point) AS topar FROM fb_score WHERE matchid=$matchid GROUP BY userid";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()){
$playersArray[] = $row;
}
}
现在,我的问题是,有没有一种方法可以为每个用户创建一个包含所有点的数组,并将其放入$行
假设SUMpoint由3个点3、5、4相加。我能在结果里说出来吗。现在,我只为每个用户获取最新的$row,但是添加了点、洞和topar
希望这个问题有意义:-/
感谢您的帮助:-可能有点粗糙,但它可以工作。只需将这些值分组,然后将它们放入$row变量中,就可以在数组中分解它们
select *, GROUP_CONCAT(CONVERT(point,CHAR)) as all_points from fb_score GROUP BY userid
$row['point']不是您想要的?@user2078421不,这是组中的最后一个固定匹配,不是每行所有匹配的总和。@user2078421我想在最终结果中生成$row[point]和数组。有道理?也许创建一个新的$row[pointsarray]=arrayallpoints by userI我想你需要在一个单独的查询中这样做。在$PlayerArray[]中,您有用户ID,所以选择所有的点,这是因为select*…的语法被奇怪地允许。。。按用户ID分组。使用聚合查询时,只能依赖聚合的字段或在GROUPBY子句中列出的字段。*涵盖的所有其他内容都应视为垃圾数据。完美。。。工作起来很有魅力:-