Damit ist in $users eine Art Matrix entstanden.
Hier wollte ich noch hinzuschreiben:
Für jede Gruppe in der ein User Mitglied ist, existiert nun ein Element in der verschachtelten Struktur $users.
Die sieht auf den ersten Blick sicher etwas komisch aus, da zwar für die Schnittpunkte User zu Gruppe zwar Felder existieren, für die Nicht-Schnittpunkte ist jedoch kein Leer-Element eingefügt, sondern einfach nichts da. :-)
Außerdem als Nachtrag noch etwas zum Nachdenken :-)
Was passiert, wenn dir bei deiner jetzigen Tabellenstruktur beispielsweise einfällt: Englisch ist "moderner", benennen wir doch einfach die Gruppe "Benutzer" um in "User" ?