Convertendo uma matriz plana em uma matriz agrupada por categorias

Eu tenho uma tabela de banco de dados que se parece com isso:

uid | group  | category
1   | group1 | cat1
2   | group1 | cat2
3   | group2 | cat3
4   | group2 | cat4
5   | group2 | cat5
6   | group3 | cat6
7   | group3 | cat7

Mas eu preciso desses dados em uma matriz, que agrupe categorias por seusgroup.

Por exemplo, minha matriz deve ficar assim:

Array
(
    [group1] => Array
        (
            [0] => Array
                (
                    [0] => 1
                    [1] => cat1

                )

            [1] => Array
                (
                    [0] => 2
                    [1] => cat2
                )

        )

    [group2] => Array
        (
            [0] => Array
                (
                    [0] => 3
                    [1] => cat3
                )

            [1] => Array
                (
                    [0] => 4
                    [1] => cat4
                )

            [2] => Array
                (
                    [0] => 5
                    [1] => cat5
                )

        )

    [group3] => Array
        (
            [0] => Array
                (
                    [0] => 6
                    [1] => cat6
                )
            [1] => Array
                (
                    [0] => 7
                    [1] => cat7
                )

        )

)

Eu escrevi um loop foreach que faz exatamente isso, mas tenho um problema.

Meu problema é que ele sempre deixa de fora a última linha da tabela e não tenho certeza de como corrigi-lo. Na minha opinião, a lógica determina que sempre funcione.

Eu estava pensando que após o loop eu poderia apenas adicionar a última linha à nova matriz, mas acho que isso pode causar problemas se a última linha tiver um grupo diferente, e eu preferiria que a solução fosse incorporada no loop foreach.

Infelizmente, estou perdido aqui. Como posso corrigir meu código para incluir a última linha da consulta ao banco de dados?

Eu também estaria interessado em ver quais melhorias posso fazer no meu código atual, mas essa pode ser uma pergunta melhor para a revisão de códigos.

Meu loop:

$pass = [];
foreach($stmt as $key => $value) {
    if(empty($currentGroup)) $currentGroup = $value['group'];
    if(empty($temp)) $temp = [];
    if($currentGroup != $value['group'] || $key+1 == count($stmt)) {
        $pass[$currentGroup] = $temp;
        $currentGroup = $value['group'];
        $temp = [];
        $temp[] = [$stmt[$key]['uid'], $stmt[$key]['category']];
    } else {
        $temp[] = [$stmt[$key]['uid'], $stmt[$key]['category']];
    }
}

questionAnswers(1)

yourAnswerToTheQuestion