Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/261.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 按分组创建数组_Php_Arrays_Mysqli - Fatal编程技术网

Php 按分组创建数组

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

我正在制作一个高尔夫排行榜,其中我从一个特定的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 = $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子句中列出的字段。*涵盖的所有其他内容都应视为垃圾数据。完美。。。工作起来很有魅力:-