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.