Array nach Subarray-Werten gruppieren

In PHP kann man ein Array von Arrays (Unterarrays) nach dem Wert eines bestimmten Schlüssels in jedem Unterarray gruppieren, indem man die Funktion array_reduce() verwendet. Hier ist ein Beispiel:

<?php

$data = [['id' => 1, 'name' => 'Alice', 'group' => 'A'], ['id' => 2, 'name' => 'Bob', 'group' => 'B'], ['id' => 3, 'name' => 'Charlie', 'group' => 'A'], ['id' => 4, 'name' => 'Dave', 'group' => 'B']];

$grouped = array_reduce(
  $data,
  function ($carry, $item) {
    $carry[$item['group']][] = $item;
    return $carry;
  },
  []
);

print_r($grouped);

Dies gruppiert die Unterarrays nach dem Wert des Schlüssels 'group', wodurch folgende Ausgabe erzeugt wird:

Array
(
    [A] => Array
        (
            [0] => Array
                (
                    [id] => 1
                    [name] => Alice
                    [group] => A
                )

            [1] => Array
                (
                    [id] => 3
                    [name] => Charlie
                    [group] => A
                )

        )

    [B] => Array
        (
            [0] => Array
                (
                    [id] => 2
                    [name] => Bob
                    [group] => B
                )

            [1] => Array
                (
                    [id] => 4
                    [name] => Dave
                    [group] => B
                )

        )

)

Man kann nach jedem Schlüssel gruppieren, der im Unterarray vorhanden ist, je nach Anforderung.